locasticsearch
1.0.0
Python中的無服務器全文搜索
️ 休眠狀態:? ?
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上的全文搜索: