Pythonでのサーバーレスフルテキスト検索
ショ和 休眠状態:? ?
Locasticsearchは、SQLiteフルテキスト検索機能を搭載したサーバーレスフルテキスト検索を提供しますが、ElasticSearch APIとの(サブセット)と互換性があります。
そうすれば、サービスをセットアップする必要なく、テキスト検索アプリケーションを快適に開発し、コードを変更せずにスケールまたはより多くの機能のためにElasticSearchにスムーズに移行できます。
とはいえ、このライブラリでサポートされているサブセット内で基本的な検索操作のみを行っていて、クラスターの展開に行くことを正当化するドキュメント(〜00万)を持っていない場合、locasticsearchは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 locasticsearchlocasticsearchを使用しないでください。
locasticsearchを使用する必要があります。
既存のツールについてのいくつかの簡単な考え、お気軽に追加/コメントしてください:
最もフル機能の純粋なPythonテキスト検索ライブラリ:
全文検索の大きなチャンピオン。これは、生産で使用する必要があるものです。
これは、弾性検索API互換性を気にしない場合、ローカルフルテキスト検索のための良い推奨事項です
pip install tantivy純粋なPythonではありませんが、Pyseriniは、ローカルでスケーラブルなものが必要な場合、良い妥協です。
Django Haystackは、コードを変更することなく、さまざまな検索バックエンド(Solr、Elasticsearch、Hoosh、Xapianなど)をプラグインできる統合APIを提供します。
Gensimはトピックモデリングに焦点を当てていますが、テキスト検索にはTfidfModelとSparseMatrixSimilarity使用できます。それは、これは反転インデックス(線形検索)を使用していないため、スケーラビリティが制限されています。
Peeweeは実際にはより一般的なORMですが、SQLiteで全文検索を使用するための抽象化を提供します。