使用python+whoosh实现全文检索


Posted in Python onDecember 09, 2019

whoosh的官方介绍:http://whoosh.readthedocs.io/en/latest/quickstart.html

因为做的是中文的全文检索需要导入jieba工具包以及whoosh工具包

直接上代码吧

from whoosh.qparser import QueryParser 
from whoosh.index import create_in 
from whoosh.index import open_dir 
from whoosh.fields import * 
from jieba.analyse import ChineseAnalyzer 
from get_comment import SQL 
from whoosh.sorting import FieldFacet 
 
analyser = ChineseAnalyzer()  #导入中文分词工具 
schema = Schema(phone_name=TEXT(stored=True, analyzer=analyser), price=NUMERIC(stored=True), 
          phoneid=ID(stored=True))# 创建索引结构 
ix = create_in("path", schema=schema, indexname='indexname') #path 为索引创建的地址,indexname为索引名称 
writer = ix.writer() 
writer.add_document(phone_name='name',price ="price",phoneid ="id") # 此处为添加的内容  
print("建立完成一个索引") 
writer.commit() 
# 以上为建立索引的过程 
new_list = [] 
index = open_dir("indexpath", indexname='comment') #读取建立好的索引 
with index.searcher() as searcher: 
  parser = QueryParser("要搜索的项目,比如“phone_name", index.schema) 
  myquery = parser.parse("搜索的关键字") 
  facet = FieldFacet("price", reverse=True) #按序排列搜索结果 
  results = searcher.search(myquery, limit=None, sortedby=facet) #limit为搜索结果的限制,默认为10,详见博客开头的官方文档 
  for result1 in results: 
    print(dict(result1)) 
    new_list.append(dict(result1))

注:

Whoosh 有一些很有用的预定义 field types,你也可以很easy的创建你自己的。

whoosh.fields.ID

这个类型简单地将field的值索引为一个独立单元(这意味着,他不被分成单独的单词)。这对于文件路径、URL、时间、类别等field很有益处。

whoosh.fields.STORED

这个类型和文档存储在一起,但没有被索引。这个field type不可搜索。这对于你想在搜索结果中展示给用户的文档信息很有用。

whoosh.fields.KEYWORD

这个类型针对于空格或逗号间隔的关键词设计。可索引可搜索(部分存储)。为减少空间,不支持短语搜索。

whoosh.fields.TEXT

这个类型针对文档主体。存储文本及term的位置以允许短语搜索。

whoosh.fields.NUMERIC

这个类型专为数字设计,你可以存储整数或浮点数。

whoosh.fields.BOOLEAN

这个类型存储bool型

whoosh.fields.DATETIME

这个类型为 datetime object而设计(更多详细信息)

whoosh.fields.NGRAM 和 whoosh.fields.NGRAMWORDS

这些类型将fiel文本和单独的term分成N-grams(更多Indexing & Searching N-grams的信息)

以上这篇使用python+whoosh实现全文检索就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
讲解Python中if语句的嵌套用法
May 14 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
Python赋值语句后逗号的作用分析
Jun 08 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
详解Python基础random模块随机数的生成
Mar 23 Python
python字符串替换第一个字符串的方法
Jun 26 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 Python
Python 实现顺序高斯消元法示例
Dec 09 #Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 #Python
在python中做正态性检验示例
Dec 09 #Python
python实现高斯判别分析算法的例子
Dec 09 #Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 #Python
使用 Python 写一个简易的抽奖程序
Dec 08 #Python
布隆过滤器的概述及Python实现方法
Dec 08 #Python
You might like
isset和empty的区别
2007/01/15 PHP
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现多线程的两种方式
2016/05/22 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
详解python算法之冒泡排序
2019/03/05 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
python定时截屏实现
2020/11/02 Python
python 实现表情识别
2020/11/21 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
德国团购网站:Groupon德国
2018/03/13 全球购物
大学生毕业自荐信
2013/10/10 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
2019秋季运动会口号
2019/06/25 职场文书