使用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单链表实现代码实例
Nov 21 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python中nan与inf转为特定数字方法示例
May 11 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
wxPython多个窗口的基本结构
Nov 19 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
在pycharm中创建django项目的示例代码
May 28 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
pycharm无法安装cv2模块问题
May 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
认识并使用PHP超级全局变量
2010/01/26 PHP
详解php中 === 的使用
2016/10/24 PHP
Yii核心验证器api详解
2016/11/23 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
Python多进程同步简单实现代码
2016/04/27 Python
Python 性能优化技巧总结
2016/11/01 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
python文件操作的简单方法总结
2019/11/07 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python