使用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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
django站点管理详解
Dec 12 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 Python
pytorch常用数据类型所占字节数对照表一览
May 17 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
smarty实现多级分类的方法
2014/12/05 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
python 中的int()函数怎么用
2017/10/17 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python+django+rest框架配置创建方法
2019/08/31 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
CSS3 边框效果
2019/11/04 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
企业年会主持词
2014/03/27 职场文书
大学生就业策划书范文
2014/04/04 职场文书
消防工作实施方案
2014/06/09 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
端午节活动总结
2014/08/26 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
交通安全学习心得体会
2016/01/18 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
导游词之唐山景点
2019/12/18 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android