from flask import Flask, request
from jpype import *
from mySegment import *
import pymongo
from bson import ObjectId,json_util
app = Flask(__name__, static_folder='static/', static_url_path='')
segment_test = mySegment()
mongodbAddr = 'mongodb://xxx.xxx.xxx.xxx:27017/'
myclient = pymongo.MongoClient(mongodbAddr)
guangmingNewsDB = myclient['guangmingNews']
wordDoc = guangmingNewsDB['word']
urlDoc = guangmingNewsDB['url']
@app.route('/')
def root():
return app.send_static_file('index.html')
@app.route('/query', methods=['GET', 'POST'])
def query():
add_info = "empty"
res = "我不明白你的意思"
a = request
print(request)
if request.method == 'GET':
str_in = request.args.get("queryFromUser")
else:
str_in = request.form.get("queryFromUser") #这里名字改了之后,前段部分也要改,如果名字一致还是报错,就需要清理浏览器缓存
print("this is query:")
print(str_in)
#对查询语句进行分词
segment_list = segment_test.segmentFilter(str_in)
if len(segment_list) != 1: #按多个关键词搜索
test_words = segment_list
search_array = []
for each in test_words:
search_array.append(dict(_id=each))
print(search_array)
test_pipline = [
{
'$lookup': {
'from': 'word',
'localField': '_id',
'foreignField': '_id',
'as': 'aggregate'
}},
{
'$match': {
'$or': search_array
}
},
{
'$limit': 10
}
]
test_aggregate_result = wordDoc.aggregate(test_pipline) #mongodb聚合查询
intersection_result = []
i = 0
for each in test_aggregate_result:
if i == 0:
intersection_result = list(each['count'].keys())
print(each['count'])
intersection_result = list(set(intersection_result).intersection(set(each['count'].keys())))
i = i + 1
print("交集: ")
print(intersection_result)
url_result = []
for each in intersection_result:
urlId = each
tmp = urlDoc.find_one({"_id": ObjectId(urlId)})
tmp["_id"] = tmp["_id"].__str__()
url_result.append(tmp)
print(json_util.dumps(url_result))
myclient.close()
return json_util.dumps(url_result)
else:
#按单个关键词查询
word = "".join(segment_list)
query_result = wordDoc.find_one({"_id": word})
if not query_result:
return 0
print(query_result["count"])
sort_result = segment_test.sort_by_value(query_result["count"])
url_result = []
for each in sort_result:
#print(each)
urlId = each
tmp = urlDoc.find_one({"_id": ObjectId(urlId)})
tmp["_id"] = tmp["_id"].__str__()
url_result.append(tmp)
#print(url_result)
print(json_util.dumps(url_result))
myclient.close()
return json_util.dumps(url_result)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Flask的简易搜索引擎,倒排索引存放在mongodb服务器 需要自行修改mongodb服务器地址mongodbAddr 数据库名:guangmingNews 表名:url、word、gmw、guangmingnews(这个是爬下来的原始html数据)
资源推荐
资源详情
资源评论
收起资源包目录
MyFlask-master.zip (20个子文件)
MyFlask-master
app.py 3KB
mongodb_test.py 3KB
mySegment.py 2KB
static
js
bootstrap.min.js 34KB
search.js 2KB
wsClient.js 539B
jquery.min.js 94KB
.idea
libraries
R_User_Library.xml 139B
static.iml 543B
workspace.xml 11KB
misc.xml 288B
modules.xml 264B
css
bootstrap.min.css 111KB
search.css 1KB
favicon.ico 4KB
index.html 1KB
fonts
glyphicons-halflings-regular.svg 61KB
glyphicons-halflings-regular.ttf 40KB
glyphicons-halflings-regular.woff 23KB
glyphicons-halflings-regular.eot 20KB
共 20 条
- 1
资源评论
博士僧小星
- 粉丝: 2263
- 资源: 5991
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- paho.mqtt.javascript.zip
- Packt 发布的《Java 编码问题》.zip
- OpenTelemetry Java SDK.zip
- OBD-II Java API.zip
- 一个支持多人游玩的Flappy-Bird变种游戏, Java编写.zip
- 一个用 Java 实现的贪吃蛇小游戏.zip
- 一个利用Java Swing实现可视化界面的扫雷小游戏.zip
- 一个简单ssh(spring springMVC hibernate)游戏网站,在网上找的html模板,没有自己写UI,重点放在java后端上.zip
- 一个使用Java完成的仿超级玛丽小游戏.zip
- 一个利用java语言制作的简单飞机游戏.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功