使用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生成XML的方法实例
Mar 21 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
Django组件cookie与session的具体使用
Jun 05 Python
Django 外键的使用方法详解
Jul 19 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
什么是Python中的顺序表
Jun 02 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 Python
python - asyncio异步编程
Apr 06 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
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
Python算法应用实战之栈详解
2017/02/04 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
详解python的ORM中Pony用法
2018/02/09 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
实体的生命周期
2013/08/31 面试题
大学本科毕业生的自我鉴定
2013/11/26 职场文书
生日主持词
2014/03/20 职场文书
工地安全标语
2014/06/07 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
暂停营业通知
2015/04/25 职场文书
教务处教学工作总结
2015/08/10 职场文书
创业计划书详解
2019/07/19 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js