使用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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
python检测lvs real server状态
Jan 22 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
Python logging模块用法示例
Aug 28 Python
python实现批量修改服务器密码的方法
Aug 13 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
深入学习python多线程与GIL
Aug 26 Python
python next()和iter()函数原理解析
Feb 07 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
python字典进行运算原理及实例分享
Aug 02 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应用提速面面观
2006/10/09 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
PHP反射API示例分享
2016/10/08 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
使用Python神器对付12306变态验证码
2016/01/05 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Python3内置模块random随机方法小结
2019/07/13 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
二手车转让协议书
2015/01/29 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
居安思危观后感
2015/06/11 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书