locasticsearch
1.0.0
Python中的无服务器全文搜索
配x 休眠状态:? ?
Locasticsearch提供了无服务器全文搜索,该搜索由SQLite全文搜索功能提供动力,但试图与Elasticsearch API(子集的一个子集)兼容。
这样,您就可以舒适地开发文本搜索应用程序,而无需设置服务并顺利过渡到Elasticsearch的规模或更多功能,而无需更改代码。
就是说,如果您仅在此库支持的子集中进行基本搜索操作,并且没有很多文档(〜百万)可以证明进行集群部署是合理的。
from locasticsearch import Locasticsearch
from datetime import datetime
es = Locasticsearch()
doc = {
"author": "kimchy",
"text": "Elasticsearch: cool. bonsai cool.",
"timestamp": datetime(2010, 10, 10, 10, 10, 10),
}
res = es.index(index="test-index", doc_type="tweet", id=1, body=doc)
res = es.get(index="test-index", doc_type="tweet", id=1)
print(res["_source"])
# this will get ignored in Locasticsearch
es.indices.refresh(index="test-index")
res = es.search(index="test-index", body={"query": {"match_all": {}}})
print("Got %d Hits:" % res["hits"]["total"]["value"])
for hit in res["hits"]["hits"]:
print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])
我们还添加了一个可以转换为Elasticsearch的简化API。
pip install locasticsearch如果:
您应该使用locasticsearch,如果以下方式
关于现有工具的一些快速思考,随时添加/评论:
到目前为止,最全面的纯Python文本搜索库:
全文搜索的大冠军。这是您在生产中应该使用的:
如果您不关心弹性搜索API兼容性,这是本地全文搜索的好建议
pip install tantivy虽然不是纯净的python,但如果您想要本地的东西和可扩展的东西,Pyserini是一个很好的折衷方案:
Django Haystack提供了一个统一的API,可让您插入不同的搜索后端(例如Solr,Elasticsearch,Whoosh,Xapian等),而无需修改代码:
尽管Gensim专注于主题建模,但您可以使用TfidfModel和SparseMatrixSimilarity进行文本搜索。也就是说,这不使用倒置索引(线性搜索),因此其可扩展性有限。
Peewee实际上是一个更一般的ORM,但提供了抽象来使用SQLITE上的全文搜索: