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,下图为该数据集的前十行:
poem.csv
字段
??根据数据集的特征,我们创建四个字段(fields):title, dynasty, poet, content。创建的代码如下:
其中,ID只能为一个单元值,不能分割为若干个词,常用于文件路径、URL、日期、分类;
TEXT文件的文本内容,建立文本的索引并存储,支持词汇搜索;Analyzer选择结巴中文分词器。
创建索引文件
??接着,我们需要创建索引文件。我们利用程序先解析poem.csv文件,并将它转化为index,写入到indexdir目录下。Python代码如下:
index创建成功后,会生成indexdir目录,里面含有上述poem.csv数据的各个字段的索引文件。
查询
??index创建成功后,我们就利用进行查询。
??比如我们想要查询content中含有的诗句,可以输入以下代码:
输出结果如下:
【python学习】
学Python的伙伴,欢迎加入新的交流【君羊】:1020465983
一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208081 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!