Whoosh 是一个纯python实现的全文搜索组件。Whoosh不但功能完善,还非常的快。
Whoosh的作者是MattChaput,由Side Effects Software公司开发。项目的最初用于Houdini(Side Effects Software公司开发的3D动画软件)的在线帮助系统。Side Effects Software公司将该项目开源。
主要特性:
* 敏捷的API(Pythonic API)。
* 纯python实现,无二进制包。程序不会莫名其妙的崩溃。
* 按字段进行索引。
* 索引和搜索都非常的快 -- 是目前最快的纯python全文搜索引擎。
* 良好的构架,评分模块/分词模块/存储模块等各个模块都是可插拔的。
* 功能强大的查询语言(通过pyparsing实现功能)。
* 纯python实现的拼写检查(目前唯一的纯python拼写检查实现)
为啥选择Whoosh
* 纯python实现,省了编译二进制包的繁琐过程。
* python代码比java更容易读懂,而且用起来也更方便。(翻者注:这个容易引发口水)
* 在很多时候易用性比单纯的最求速度更重要。
Whoosh从其他的开源搜索引擎中获取了大量的灵感。 基础构建参考Lucene,使用KinoSearch的索引算法,部分评分算法来自Terrier,英文的词语态变化来自Minion.
官方文档:https://whoosh.readthedocs.io/en/latest/searching.html 一旦创建了索引并向其中添加了文档,就可以搜索这些文档。 目录: searcher对象 Resulted对象 得分和排序 筛选结果 我的查询中有哪些匹配项 折叠结果 限制搜索时间 方便的方法 结合结果对象 一、Searcher 对象 获得一个 whoosh.searching.Se
Index 与 Schema 对象 要开始使用Whoosh ,你需要一个 index 对象。第一次使用一个index时,你需要定义这个index 的Schema。 这个Schema 列出了 index 中的field。 一个field 是每个文档在index中的一条信息,比如他的标题或文本内容。 一个field 也可以被索引(意即可以被搜索)或者存储 (意即被索引的值由其结果返回,这对于标题类的f
先了解基本概念和步骤: Quick Start Whoosh是一个索引文本和搜索文本的类库,他可以为你提供搜索文本的服务,比如如果你在创建一个博客的软件,你可以用whoosh为它添加添加一个搜索功能以便用户来搜索博客的入口 下面是一个简短的例子: >>>from whoosh.index importcreate_in >>>from whoosh.fields import * >>>sc
1. 为什么需要搜索引擎 如果被问及什么是搜索引擎?相信有相当一部分人会列举出百度或者谷歌的例子。的确,搜索业务是这些公司的核心业务之一。然而在目前互联网普及的时代,搜索引擎几乎可以说随处可见:出门的时候会打开地图软件搜一下路线;饿了的时候搜一个餐厅或者搜一种喜欢吃的外卖;刷微博的时候想找到感兴趣的内容…… 凡此种种,不胜枚举。搜索是我们获取信息的最主要的途径(本质上说,请教他人问题也是一种搜索,
前几天要用Django-haystack来实现搜索功能,网上一搜中文资源少之又少,虽说有官方文档,但相信对于我们这些英语差的同学来说要看懂真的是一件难事。特别是关于高级部分,特地找了个英语专业的来翻译,也没能看出个名堂来,专业性实在是太强了,导致完全看不懂。。。 但是,对于一些小站点的开发来说,下面我要给大家讲的完全足够用了,只不过有时候确实麻烦点。好了,言归正传。为了节约时间,简单设置部分从网上
whoosh 是一个纯python实现的全文搜索引擎,它小巧轻便,安装简单,设计上参考了 Lucene ,性能上虽有欠缺,但贵在方便,无需复杂安装,对于构建小型网站的搜索引擎来说,是一个不错的选择。 1. 快速入门 whoosh 可以使用pip进行安装 pip install whoosh 现在通过官网的例子,快速体验 from whoosh.index import create_in f
1、安装 flask_whooshalchemyplus 方式一: pip install flask_whooshalchemyplus 方式二: git clone https://github.com/Revolution1/Flask-WhooshAlchemyPlus.git cd Flask-WhooshAlchemyPlus python setup.
我正在大文本文件中搜索匹配项,但我发现它太慢了。这是文件结构: 我正在尝试匹配第一列的文本,我想提取第二列的值。列之间用\t隔开,大约有1000万行。用不同的单词多次搜索文件。什么搜索方法的时间效率最好? 编辑:文件大小为129 Mb,将被搜索至少数千次。EDIT2:文件是按字母顺序排序的,只有当单词有不同的大写字母时,它们才能出现多次。例如:单词都是不同的条目。
问题内容: 据我所见,内置实现是一个迭代的实现:python docs python是否有实现用于查找子字符串的更充分技术的实现:Boyer- Moore算法 , Rabin-Karp算法等… ??? 问题答案: 实际的cpython字符串搜索实现在这里: http://hg.python.org/cpython/file/tip/Objects/stringlib/fastsearch.h 它似
回顾 在前面的章节(分页),我们已经加强了数据库查询,因此能够在页面上获取各种查询。 今天,我们会继续探讨数据库的话题,只是领域不同。所有存储内容的应用程序必须提供搜索能力。 许多其它类型的网站可能使用了谷歌、必应等索引所有的内容并且提供查询结果。这个对于大多数静态页面的网站,像论坛,是很好用。我们应用程序 microblog 的基本单元是用户短小的 blog,不是整个页面。我们希望搜索结果是动态
本文向大家介绍Django中使用Whoosh进行全文检索的方法,包括了Django中使用Whoosh进行全文检索的方法的使用技巧和注意事项,需要的朋友参考一下 Whoosh 是纯Python实现的全文搜索引擎,通过Whoosh可以很方便的给文档加上全文索引功能。 什么是全文检索 简单讲分为两块,一块是分词,一块是搜索。比如下面一段话: 上次舞蹈演出直接在上海路的弄堂里 比如我们现在想检索上次的演出
问题内容: 我尝试在elasticsearchJava API上使用正则表达式运行全文搜索。我的过滤器是这样的: 但是它只与一个单词匹配,而没有短语匹配。我的意思是,例如: 如果soruce中有一个字符串,例如:“ ”,而当我的文本字符串如下:“ ”,“ ”,“ ” …时,它就起作用了。 但是,当我的realTimeTextIn字符串为“ ”时,全文搜索将不起作用。我搜索的单词不能超过一个。 我在
我尝试在弹性搜索java api上使用正则表达式运行全文搜索。我的过滤器是这样的: 但是它只与一个单词匹配,而不是与短语匹配。我的意思是,例如: 如果soruce中有一个字符串,如:“
问题内容: 我创建了如下的Oracle Text索引: 然后,我可以执行以下操作: 但是,可以说我们在此表中还有另一列,例如,我想改为执行以下查询: 使用上述索引,Oracle将必须搜索包含的所有项目,然后检查所有。 理想情况下,我宁愿只使用来搜索项目,因此我想要这样的索引: 有点像普通索引,因此可以对每个进行单独的文本搜索。 有没有一种方法可以在Oracle中做这样的事情(如果很重要,我将使用1
问题内容: 我想在我的网页中进行全文搜索。我需要分页进行搜索。我的数据库每张表有50,000+行。我已经改变了我的表,并使其成为索引。该表始终处于更新状态,仍然有一个自动增加的列。而最新的总是在表格的末尾。 但整个查询时间将花费。我通过Google搜索了许多文章,有的文章写道,只有限制字段字长才能帮助更快地进行搜索。但作为一种类型,它会像这样改变一定的长度(我尝试过标题TEXT(500) CHAR