カスタム Web アプリと統合するのに最適なテキスト検索エンジンはどれですか?
-
02-07-2019 - |
質問
ユーザーがドキュメントをアップロードしたり、独自のドキュメントを作成したりできる Web アプリがあります。アップロードされたファイルは Amazon S3 に保存され、作成された情報は MySQL データベースに保存されます。私が探しているのはある種の検索エンジンで、それぞれに一意の ID を持つすべてのテキスト ドキュメントを入力すると、インデックスなどを構築します。後で、検索クエリを与えると、一致するテキストのスニペットとともに、(ID を介して) 最も一致するドキュメントが抽出されます。
基本的に、私たちはユーザーがアップロードされたものと、他のユーザーが公開としてマークしたものすべてのリポジトリを検索できるようにしたいと考えています。このソリューションは標準の Linux サーバーで実行する必要があり、オープンソースであることが理想ですが、法外な価格でなければ、有料ソリューションも検討します。
これまでのところ、次の 3 つの候補を見つけました。
- MySQL全文検索 - 私が読んだいくつかのレポートでは、非常に遅いというものがあります
- Apache Lucene - 残念ながら Java で書かれていますが、必要に応じて使用します。おそらく速い
- スフィンクス - あまり人気がないようですが、理想的には、私が見つけた解決策はどれもコミュニティのサポートがたくさんあることです。
私が見落としていた他に良い選択肢があれば、または上記のいずれかの経験がある場合は教えてください。
解決
を見てみましょう ソルル. 。Lucene ベースなので非常に高速で、どのプラットフォームからでも簡単に使用できます。
他のヒント
スフィンクス いくつかの一般的な RDMS (特に MySQL) でうまく機能するため、検討する価値があるかもしれません。
もあります ザピアン これは高速で、かなりカスタマイズ可能です。
カスタム インデクサーのサポートがあり、データベースに保存されていないデータのインデックスを作成できるため、S3 に保存されているドキュメントに役立つ可能性があります。
私はそれを想像します グーグル あなたのニーズを満たすソリューションが見つかります。ここから始める: Google エンタープライズ
Lucene には「」という Ruby ポートがあります。フェレット」。Ruby API に加えて、「cFerret」と呼ばれる基礎となる C 実装を利用できます。
ルセンはとても良いです。元々は Java で書かれていましたが、PHP 実装も存在します。 http://framework.zend.com/manual/en/zend.search.lucene.html