使用python+whoosh实现全文检索
作者:倚楼灬风细 发布时间:2021-01-04 05:29:46
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的信息)
来源:https://www.cnblogs.com/muty/p/8540711.html
猜你喜欢
- 本文实例讲述了js控制div弹出层实现方法。分享给大家供大家参考。具体分析如下:这是个功能很好,且容易调用和控制的弹出层。感兴趣的朋友可以调
- 升级了浏览器到IE9,今天进入公司网站后台突然发现有些页面进不去了,F12调试显示有JS错误:DOM Exception: INVALID_
- PHP levenshtein() 函数实例计算两个字符串之间的 Levenshtein 距离:<?php echo levensht
- 1. 准备工作下载源码包wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.b
- 作者: Terrance译者:Sheneyan(子乌)时间:2010.2.6英文原文:13 Useful WordPress SQL Que
- 网站用户为什么注册?这个问题在平时我们讨论的并不多。我们常常单纯的在设想如何简化注册流程,如何从细节的关怀入手避免用户注册时填写错误信息造成
- 如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话我们是不希望看到如下情况的。我们可以把varchar转换
- 本文主要介绍如何用Python设计一个经典小游戏:猜大小。在这个游戏中,将用到前面我介绍过的所有内容:变量的使用、参数传递、函数设计、条件控
- Python等工具确实是不错的工具,但是有时候不管是基础的Python还是Python的软件包都让我觉得对中文不是很亲近。时不时地遇到一点问
- 一般上电子商务网站买东西的用户分三种:随便看看,就是不买先看看,买不买再说就是来买东西的这样的需求反应到产品页的购买按钮上,我们一般会看到购
- 重要提示:本文并非一篇简单地介绍内联格式模型(inline formatting model)的文章。相反,它是对内联格式(inline f
- 对MySQL的用户而言,备受诟病的一个问题就是导入SQL备份文件时不能并发,使得导入的效率很低。今天,我们就来改变下思路,尝试一下并发导入的
- <style> #L { position:absolute; color:
- 我们有时候看到一些文章因为一行的字符超长而把一些表格或DIV撑开或字符写到溢出了.如何防止表格防止撑开,表格不被内容撑开,单行字符超长div
- 什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为
- 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取
- 一些MySQL发布对MySQL数据库中的系统表的结构进行了更改,添加了新权限或特性。当你更新到新版本MySQL,你应同时更新系统表,以确保它
- 在计算机普及的现代设计领域,文字的设计的工作很大一部分由计算机代替人脑完成了(很多平面设计软件中都有制作艺术汉字的引导,以及提供了数十上百种
- 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
- Innodb:[fb]# ll -hs url_comment_*.ibd633M -rw-rw---- 1 mysql mysql 632