lunr.js的python实现
lunr的Python项目详细描述
肺动脉压
由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了解更多用法示例。