ピラミッド上で実行されている自分のWebサイトに検索機能を実装しようとしていますが、この問題に取り組む最も効率的な方法は何でしょうか。私は現在、 SqlAlchemyを使用したWhooshとMySQLの全文検索を調べています。速くてシンプルな実装が必要で、どれが最良の選択か疑問に思います。
2 に答える
しばらくの間、ネイティブデータベースでフルテキストを使用してみましたが、sqlite、mysql、およびpgsqlで機能し続けるには手間がかかりすぎました。私はすべての検索コードをwhooshに移植し、それ以来本当に満足しています。小さなワークロードでうまく機能し、純粋なPythonであり、セットアップするサーバーがありません。
ディスクにファイルを書き込んだり更新したりするのとほとんど同じように実装します。私が読んだことから、それは数百万の文書でうまくいきます。インデックスサイズが約100MBの18kドキュメントで使用しています。さまざまなトークン化やその他の構成を実装するための柔軟性がたくさんあります。私は本当に人々がそこから始めて、彼らがwhooshを成長させたら、elasticsearch、lucene/solrなどで追加のプロセスを開始することを検討することを本当にお勧めします。
ここで、私がどのように実装したかを確認できます。
https://github.com/mitechie/Bookie/blob/develop/bookie/models/fulltext.py
SqlAlchemyイベントフックを使用して更新します。
https://github.com/mitechie/Bookie/blob/develop/bookie/models/__init__.py#L663
そして、あなたはそれの基本的な実装を検索することによって判断することができます:
私はElasticSearchの大ファンです。セットアップ、保守、および操作が最も簡単です。
私は通常、リクエストを使用します。
インデックスを作成するには:
requests.put("http://localhost:9200/myindex/category/",data=json.dumps(document))
検索する:
requests.get("http://localhost:9200/myindex/category/_search?q="+somequery)
DSLを使用した検索でさらに深く理解することができます。