lunr.js的python实现

lunr的Python项目详细描述


Build StatuscodecovSupported Python VersionsPyPIRead the DocsDownloads

肺动脉压

Oliver Nightingale实现的Lunr.js的python实现。

A bit like Solr, but much smaller and not as bright.

js的python版本旨在将简单而强大的全文搜索功能引入到python中,以确保结果尽可能接近原始实现。

这到底有什么用?

lunr是一个简单的全文搜索解决方案,适用于部署像elasticsearch这样的全面解决方案是不可能的、可行的,或者您只是简单的原型。

luner解析一组文档并创建一个反向索引,用于快速全文搜索。

典型的用例是将lunr集成到web应用程序中,例如MkDocs documentation library。为了做到这一点,您需要在应用程序的javascript代码中集成Lunr.js,这将需要获取和解析文档的json,并在应用程序启动时创建索引。根据文档集的大小,这可能需要一些时间,并可能会阻止浏览器的主线程。

py提供了一个后端解决方案,允许您提前解析文档并创建一个lunr.js兼容的索引,您可以通过该索引读取浏览器版本,从而最大限度地缩短应用程序的启动时间。

当然,您也可以使用lunr.py在桌面应用程序或后端服务中支持全文搜索,以模拟elasticsearch来搜索您的文档。

安装

简单的pip install lunr只适用于英语,与lunr.js版本的兼容性最好。

通过Natural Language Toolkit词干分析器对其他语言的可选和实验性支持也可以通过pip install lunr[languages]获得。有关详细信息,请参阅documentation page on languages

当前状态

lunr.pytargets a specific version of lunr.js的每个版本都会产生与python 2.7和3中相同的结果。

py还序列化与lunr.js和viceversa可使用的^{}相关的Index实例。

api处于alpha阶段,可能会发生变化。

用法

您需要一个表示要搜索的文档的dict列表。这些文档必须有一个唯一的字段(用作参考)和一系列要搜索的字段。

lunr提供了一个方便的lunr函数来快速索引这组文档:

>>>fromlunrimportlunr>>>>>>documents=[{...'id':'a',...'title':'Mr. Green kills Colonel Mustard',...'body':'Mr. Green killed Colonel Mustard in the study with the candlestick.',...},{...'id':'b',...'title':'Plumb waters plant',...'body':'Professor Plumb has a green plant in his study',...}]>>>idx=lunr(...ref='id',fields=('title','body'),documents=documents...)>>>idx.search('kill')[{'ref':'a','score':0.6931722372559913,'match_data':<MatchData"kill">}]>>>idx.search('study')[{'ref':'b','score':0.23576799568081389,'match_data':<MatchData"studi">},{'ref':'a','score':0.2236629211724517,'match_data':<MatchData"studi">}]

请参阅documentation了解更多用法示例。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring JSTL:绝对uri:http://java.sun.com/jsp/jstl/core无法在两个站点中解析。xml或与此应用程序一起部署的jar文件   java在Junit测试中找不到失败的符号   java为什么在没有同步块的情况下调用wait()、notify()或notifyAll()不是编译器错误?   使用onDraw()绘制多个位图的java Android在曲面视图上放大缩小画布   在java中比较args值和字符串   java更改文件中的特定字节   java TransformerFactory破坏<html>标记中的<input>和<br>标记   azure appinsights java自定义指标不起作用   Java泛型在实现接口的类上指定上界,接口本身指定上界   java AS400 prog和动态类路径   java应用程序截图时收到空消息   java无法从片段中获取上下文   找不到java配置单元UDF类   linux是一个提供java的接口。lang.NoClassDefFoundError   java如何使用面向对象建模创建此数据库