使用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 相关文章推荐
win10系统中安装scrapy-1.1
Jul 03 Python
Python反射的用法实例分析
Feb 11 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
Python根据指定文件生成XML的方法
Jun 29 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Python configparser模块应用过程解析
Aug 14 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 Python
Python一些基本的图像操作和处理总结
Jun 23 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
mysql 搜索之简单应用
2007/04/27 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
php实现文件预览功能
2017/05/23 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
node.js监听文件变化的实现方法
2019/04/17 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
Pytorch之parameters的使用
2019/12/31 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
几道PHP的面试题
2012/05/19 面试题
SQL数据库笔试题
2016/03/08 面试题
《藏戏》教学反思
2014/02/11 职场文书
运动会演讲稿
2014/05/07 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
科技工作者先进事迹
2014/08/16 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
教师考核评语大全
2014/12/31 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python