python实现一个搜索引擎(Pylucene)实例教程


当前第2页 返回上一页

索引的搜索有7个主要的步骤:

①首先对搜索语句进行判断,若语句不是针对标题或文章内容进行单一域的查询,即不包含关键词“title:”或“content:”时默认搜索title和content两个域。

②实例化一个SimpleFSDirectory对象,指定它的工作路径为先前创建索引的路径。

③实例化一个CJKAnalyzer分析器,搜索时使用的分析器应与索引构建时使用的分析器在类型版本上均一致。

④实例化一个IndexSearcher对象lucene_searcher,它的参数为第○2步的SimpleFSDirectory对象。

⑤实例化一个QueryParser对象my_query,它描述查询请求,解析Query查询语句。参数Version.LUCENE_CURRENT为pylucene的版本号,“title”指默认的搜索域,lucene_analyzer指定了使用的分析器,query_str是Query查询语句。在实例化QueryParser前会对用户搜索请求作简单处理,若用户指定了搜索某个域就搜索该域,若用户未指定则同时搜索“title”和“content”两个域。

⑥lucene_searcher进行搜索操作,返回结果集total_hits。total_hits中包含结果总数totalHits,搜索结果的文档集scoreDocs,scoreDocs中包括搜索出的文档以及每篇文档与搜索语句相关度的得分。

⑦lucene_searcher搜索出的结果集不能直接被Python处理,因而在搜索操作返回结果之前应将结果由Pylucene转为普通的Python数据结构。使用For循环依次处理每个结果,将结果文档按相关度得分高低依次将它们的地址域“url”的值放入Python列表result_urls,将标题域“title”的值放入列表result_titles。最后将包含地址、标题的列表和结果总数组合成一个Python“字典”,将最后处理的结果作为整个搜索操作的返回值。

用户在浏览器搜索框输入搜索词并点击搜索,浏览器发起一个GET请求,Flask的路由route设置了由result函数响应该请求。result函数先实例化一个搜索类query的对象infoso,将搜索词传递给该对象,infoso完成搜索将结果返回给函数result。函数result将搜索出来的页面和结果总数等传递给模板result.html,模板result.html用于呈现结果

如下是Python使用flask模块处理搜索请求的代码:

app = Flask(__name__)#创建Flask实例

@app.route('/')#设置搜索默认主页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

def index():

html="<h1>title这是标题</h1>"

return render_template('index.html')

@app.route("/result",methods=['GET', 'POST'])#注册路由,并指定HTTP方法为GET、POST

def result(): #resul函数

if request.method=="GET":#响应GET请求

key_word=request.args.get('word')#获取搜索语句

   if len(key_word)!=0:

      infoso = query("./glxy") #创建查询类query的实例

       re = infoso.search(key_word)#进行搜索,返回结果集

       so_result=[]

       n=0

       for item in re["url"]:

temp_result={"url":item,"title":re["title"][n]}#将结果集传递给模板

        so_result.append(temp_result)

                n=n+1

        return render_template('result.html', key_word=key_word, result_sum=re["Hits"],result=so_result)

    else:

        key_word=""

    return render_template('result.html')

if __name__ == '__main__':

    app.debug = True

    app.run()#运行web服务

以上就是python实现一个搜索引擎(Pylucene)实例教程的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python注释符是什么意思

Python爬虫防止ip被封的方法

Python打错了怎么撤回

Python验证码识别教程之利用投影法、连通域法分割图片

Python文本编辑器是什么

Python下载模块然后怎么安装

Python虚拟机是什么

Python如何编写公众号

浅谈Python中字典append 到list 后值的改变

Python并发处理asyncio包如何使用

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...