使用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获取网页上图片下载地址的方法
Mar 11 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
深入理解Django自定义信号(signals)
Oct 15 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
PyQt5实现登录页面
May 30 Python
python实现简单反弹球游戏
Apr 12 Python
python3读取文件指定行的三种方法
May 24 Python
Python各协议下socket黏包问题原理
Apr 12 Python
python神经网络 使用Keras构建RNN训练
May 04 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 session和cookie使用说明
2010/04/07 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
Linux中为php配置伪静态
2014/12/17 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JavaScript中的this实例分析
2011/04/28 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
layui的select联动实现代码
2019/09/28 Javascript
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
python实现维吉尼亚算法
2019/03/20 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Python猴子补丁知识点总结
2020/01/05 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
2014社区三八妇女节活动方案
2014/03/30 职场文书
节约用水演讲稿
2014/05/21 职场文书
英语专业自荐书
2014/06/13 职场文书
项目验收申请报告
2015/05/15 职场文书
捐款仪式主持词
2015/07/04 职场文书
python如何进行基准测试
2021/04/26 Python
python学习之panda数据分析核心支持库
2021/05/07 Python
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android