iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Whoosh:Python 的轻量级搜索工具
  • 610
分享到

Whoosh:Python 的轻量级搜索工具

工具PythonWhoosh 2023-05-14 21:05:22 610人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Whoosh简介 Whoosh由Matt Chaput创建,它一开始是一个为Houdini 3D动画软件包的在线文档提供简单、快速的搜索服务工具,之后便慢慢成为一个成熟的搜索解决工具并已开源。 Whoosh纯由python编写而成,是一个灵

Whoosh:Python 的轻量级搜索工具

Whoosh简介

Whoosh由Matt Chaput创建,它一开始是一个为Houdini 3D动画软件包的在线文档提供简单、快速的搜索服务工具,之后便慢慢成为一个成熟的搜索解决工具并已开源

Whoosh纯由python编写而成,是一个灵活的,方便的,轻量级的搜索引擎工具,现在同时支持Python2、3,其优点如下:

  • Whoosh纯由Python编写而成,但很快,只需要Python环境即可,不需要编译器;
  • 默认使用 Okapi BM25F排序算法,也支持其他排序算法;
  • 相比于其他搜索引擎,Whoosh会创建更小的index文件;
  • Whoosh中的index文件编码必须是unicode;
  • Whoosh可以储存任意的Python对象。

Whoosh的官方介绍网站为:https://whoosh.readthedocs.io/en/latest/intro.html 。相比于elasticsearch或者Solr等成熟的搜索引擎工具,Whoosh显得更轻便,操作更简单,可以考虑在小型的搜索项目中使用。

Index & query

对于熟悉ES的人来说,搜索的两个重要的方面为mapping和query,也就是索引的构建以及查询,背后是复杂的索引储存、query解析以及排序算法等。如果你有ES方面的经验,那么,对于Whoosh是十分容易上手的。

按照笔者的理解以及Whoosh的官方文档,Whoosh的入门使用主要是index以及query。搜索引擎的强大功能之一在于它能够提供全文检索,这依赖于排序算法,比如BM25,也依赖于我们怎样储存字段。因此,index作为名词时,是指字段的索引,index作为动词时,是指建立字段的索引。而query会将我们需要查询的语句,通过排序算法,给出合理的搜索结果。

关于Whoosh的使用,在官文文档中已经给出了详细的说明,笔者在这里只给出一个简单的例子,来说明Whoosh如何能方便地提升我们的搜索体验。

示例代码

数据

本项目的示例数据为poem.csv,下图为该数据集的前十行:

Whoosh:Python 的轻量级搜索工具

poem.csv

字段

根据数据集的特征,我们创建四个字段(fields):title, dynasty, poet, content。创建的代码如下:

# -*- coding: utf-8 -*-
import os
from whoosh.index import create_in
from whoosh.fields import *
from jieba.analyse import ChineseAnalyzer
import JSON
# 创建schema, stored为True表示能够被检索
schema = Schema(title=TEXT(stored=True, analyzer=ChineseAnalyzer()),
 dynasty=ID(stored=True),
 poet=ID(stored=True),
 content=TEXT(stored=True, analyzer=ChineseAnalyzer())
 )

其中,ID只能为一个单元值,不能分割为若干个词,常用于文件路径、URL、日期、分类;

TEXT文件的文本内容,建立文本的索引并存储,支持词汇搜索;Analyzer选择结巴中文分词器。

创建索引文件

接着,我们需要创建索引文件。我们利用程序先解析poem.csv文件,并将它转化为index,写入到indexdir目录下。Python代码如下:

# 解析poem.csv文件
with open('poem.csv', 'r', encoding='utf-8') as f:
 texts = [_.strip().split(',') for _ in f.readlines() if len(_.strip().split(',')) == 4]
# 存储schema信息至indexdir目录
indexdir = 'indexdir/'
if not os.path.exists(indexdir):
 os.mkdir(indexdir)
ix = create_in(indexdir, schema)
# 按照schema定义信息,增加需要建立索引的文档
writer = ix.writer()
for i in range(1, len(texts)):
 title, dynasty, poet, content = texts[i]
 writer.add_document(title=title, dynasty=dynasty, poet=poet, content=content)
writer.commit()

index创建成功后,会生成indexdir目录,里面含有上述poem.csv数据的各个字段的索引文件。

查询

index创建成功后,我们就利用进行查询。

比如我们想要查询content中含有明月的诗句,可以输入以下代码:

# 创建一个检索器
searcher = ix.searcher()
# 检索content中出现'明月'的文档
results = searcher.find("content", "明月")
print('一共发现%d份文档。' % len(results))
for i in range(min(10, len(results))):
 print(json.dumps(results[i].fields(), ensure_ascii=False))

输出结果如下:

一共发现44份文档。
前10份文档如下:
{"content": "床前明月光,疑是地上霜。举头望明月,低头思故乡。", "dynasty": "唐代", "poet": "李白 ", "title": "静夜思"}
{"content": "边草,边草,边草尽来兵老。山南山北雪晴,千里万里月明。明月,明月,胡笳一声愁绝。", "dynasty": "唐代", "poet": "戴叔伦 ", "title": "调笑令·边草"}
{"content": "独坐幽篁里,弹琴复长啸。深林人不知,明月来相照。", "dynasty": "唐代", "poet": "王维 ", "title": "竹里馆"}
{"content": "汉江明月照归人,万里秋风一叶身。休把客衣轻浣濯,此中犹有帝京尘。", "dynasty": "明代", "poet": "边贡 ", "title": "重赠吴国宾"}
{"content": "秦时明月汉时关,万里长征人未还。但使龙城飞将在,不教胡马度阴山。", "dynasty": "唐代", "poet": "王昌龄 ", "title": "出塞二首·其一"}
{"content": "京口瓜洲一水间,钟山只隔数重山。春风又绿江南岸,明月何时照我还?", "dynasty": "宋代", "poet": "王安石 ", "title": "泊船瓜洲"}
{"content": "四顾山光接水光,凭栏十里芰荷香。清风明月无人管,并作南楼一味凉。", "dynasty": "宋代", "poet": "黄庭坚 ", "title": "鄂州南楼书事"}
{"content": "青山隐隐水迢迢,秋尽江南草未凋。二十四桥明月夜,玉人何处教吹箫?", "dynasty": "唐代", "poet": "杜牧 ", "title": "寄扬州韩绰判官"}
{"content": "露气寒光集,微阳下楚丘。猿啼洞庭树,人在木兰舟。广泽生明月,苍山夹乱流。云中君不见,竟夕自悲秋。", "dynasty": "唐代", "poet": "马戴 ", "title": "楚江怀古三首·其一"}
{"content": "海上生明月,天涯共此时。情人怨遥夜,竟夕起相思。灭烛怜光满,披衣觉露滋。不堪盈手赠,

以上就是Whoosh:Python 的轻量级搜索工具的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Whoosh:Python 的轻量级搜索工具

本文链接: https://www.lsjlt.com/news/205935.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Whoosh:Python 的轻量级搜索工具
    Whoosh简介 Whoosh由Matt Chaput创建,它一开始是一个为Houdini 3D动画软件包的在线文档提供简单、快速的搜索服务工具,之后便慢慢成为一个成熟的搜索解决工具并已开源。 Whoosh纯由Python编写而成,是一个灵...
    99+
    2023-05-14
    工具 Python Whoosh
  • Python轻量级搜索工具Whoosh怎么使用
    这篇文章主要介绍了Python轻量级搜索工具Whoosh怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python轻量级搜索工具Whoosh怎么使用文章都会有所收获,下面我们一起来看看吧。Whoosh简...
    99+
    2023-07-02
  • Python轻量级搜索工具Whoosh的使用教程
    目录Whoosh简介Index & query示例代码数据字段创建索引文件查询本文将简单介绍Python中的一个轻量级搜索工具Whoosh,并给出相应的使用示例代码。 Who...
    99+
    2024-04-02
  • 轻量级Web渗透测试工具jSQL
     轻量级Web渗透测试工具jSQLjSQL是Kali集成的一款轻量级的Web渗透测试工具。最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具。Kali提供的版本较老,并且无法自动更新。用户需要...
    99+
    2023-06-04
  • python 制作磁力搜索的工具
    这篇文章主要讲解了“python 制作磁力搜索的工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python 制作磁力搜索的工具”吧!一.准备工作装库,主要有tkinter os thre...
    99+
    2023-06-06
  • python轻量级性能工具-Locust详解
    目录性能测试基础locust安装locust模板 集合点lr_rendezvous比较常见的用法Locust基于python的协程机制,打破了线程进程的限制,可以能够在一台...
    99+
    2023-05-18
    python性能工具Locust python Locust
  • 搜索增强工具HoudahSpot for Mac
    2020鼠年商业台历设计psd模板,是一套适用于Photoshop,包含十二个月的台历模板。这套鼠年台历设计psd模板为浅蓝色,由为备忘录和日历两部分组成!更多详情点击2020鼠年商业台历设计psd模板...
    99+
    2023-06-06
  • Acorn for Mac(轻量级图片处理工具)
    Acorn for Mac是一款运行在Mac OS X平台上的一款轻量级图片处理软件,它具备全面的图像编辑工具、圆形文字工具、矢量工具、各种照片效果等,如果你非常想编辑一些照片,但又不想打开类似于PS那样...
    99+
    2024-04-02
  • Everything 文件搜索工具怎么用
    Everything 文件搜索工具怎么用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。不知道大家有没有这样的情况:当你在拷贝或下载一个文件时总是先随手找个文件夹随手一放。于是往...
    99+
    2023-06-02
  • 电脑搜索工具Listary怎么用
    今天就跟大家聊聊有关电脑搜索工具Listary怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Listary 是一款实用的搜索工具 ,它能给“我的电脑”(资源管理器)加上许多智能...
    99+
    2023-06-05
  • Oracle 轻量级实时监控工具 oratop详解
    今天和大家聊聊 Oracle 自带的 oratop 轻量级实时监控小工具! 众所周知,Oracle 最强大的监控工具就是 EM(Enterprise Manager)企业管...
    99+
    2024-04-02
  • 轻量级自动化运维工具pssh与pslurp
    pssh项目...
    99+
    2023-06-05
  • 用python实现一个文件搜索工具
    目录前言步骤操作如下:完整代码:总结前言 经常使用电脑自带的搜索很慢很卡,今天做一个搜索工具,可以搜索到隐藏的文件,而且速度也很快 步骤 导入模块 import os 检测一下输入的...
    99+
    2024-04-02
  • React 程序设计简单的轻量级自动完成搜索框应用
    目录实现效果如何使用它1.安装并导入该组件2.将ReactSearchBox 组件添加到应用程序中3.定义你的自动建议列表的数据4.所有可用的组件道具预览实现效果 一个为...
    99+
    2022-11-13
    React 轻量级自动搜索框 React 搜索框
  • 使用python制作一个批量查询搜索排名的SEO免费工具
    💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流...
    99+
    2023-08-31
    python 开发语言
  • IDEA中的轻量级接口请求工具 | HTTP Client 新手指南
    新钛云服已累计为您分享706篇技术干货 一、 简介 HTTP Client 是 IDEA 自带的一款简洁轻量级的接口调用插件,通过它,我们能在 IDEA 上开发,调试,测试 RESTful Web 服务。 二、 快速上...
    99+
    2023-08-31
    intellij-idea http java json 前端
  • Linux中常用的命令行搜索工具有哪些
    这篇文章主要介绍Linux中常用的命令行搜索工具有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!grep使用 grep 的优势是它几乎可以在任意类 Unix 系统上使用。这个命令的强大之处我相信大家都有所耳闻了。...
    99+
    2023-06-16
  • 专业Mac搜索优化工具Default Folder X for Mac
    Default Folder X for Mac 版是一款专业Mac搜索优化工具,我们在生活和工作中使用电脑时,经常会需要用到某个文件夹,或者要将执行的任务保存,都需要找到一个正确的文件夹来存放路径,在这样情况下寻找某个文件夹很麻烦,但是有...
    99+
    2023-06-06
  • 利用Python实现自制文件搜索小工具
    目录前言环境准备完整代码前言 嗨嗨,大家晚上好 ~ 当自己电脑文件很多还有点乱,不记得自己文件放哪里的时候,用电脑自带的搜索文件,这个等待时间可慢了 对我们这种敲代码的,这能忍吗,...
    99+
    2024-04-02
  • 基于Python制作一个简单的文章搜索工具
    目录 前言功能实现导入模块创建窗口背景图片搜索文本框 内容显示界面搜索内容效果代码展示内容效果代码点击搜索功能代码访问博客网页 前言 今天,我无聊的时候...
    99+
    2023-05-12
    Python实现文章搜索工具 Python文章搜索工具 Python文章搜索 Python 搜索工具
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作