使用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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
浅析Python多线程下的变量问题
Apr 28 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Django 404、500页面全局配置知识点详解
Mar 10 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
详解python变量与数据类型
Aug 25 Python
python两种注释用法的示例
Oct 09 Python
Python基于execjs运行js过程解析
Nov 27 Python
Python实现石头剪刀布游戏
Jan 20 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
PHP 处理图片的类实现代码
2009/10/23 PHP
PHP对字符串的递增运算分析
2010/08/08 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
理解JavaScript中的对象 推荐
2011/01/09 Javascript
js中的this关键字详解
2013/09/25 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
vue.js的安装方法
2017/05/12 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
详解JS浏览器事件循环机制
2019/03/27 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
大学军训感言300字
2014/03/09 职场文书
教师听课评语大全
2014/12/31 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
关于学习的决心书
2015/02/05 职场文书
社区服务活动报告
2015/02/05 职场文书
python爬虫selenium模块详解
2021/03/30 Python
python字典进行运算原理及实例分享
2021/08/02 Python