使用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抓取模板之家的CSS模板
Mar 16 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
对python模块中多个类的用法详解
Jan 10 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
python三大神器之fabric使用教程
Jun 10 Python
python3 深浅copy对比详解
Aug 12 Python
python matplotlib实现将图例放在图外
Apr 17 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
python如何使用代码运行助手
Jul 03 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
Python通过getattr函数获取对象的属性值
Oct 16 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简洁函数小结
2011/08/12 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
php实现文件编码批量转换
2014/03/10 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
python爬虫之自动登录与验证码识别
2020/06/15 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
Python计算信息熵实例
2020/06/18 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
母婴店促销方案
2014/03/05 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
初中英语课后反思
2014/04/25 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
二手房购房意向书
2015/05/09 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
MySQL读取JSON转换的方式
2022/03/18 MySQL