以下の特性を持つスタンドアロンの全文検索サーバーを探しています。
- 複数のクライアントからの検索要求に対応できるスタンドアロンサーバーとして動作する必要がある
- SQL クエリの結果をインデックス化することで、「一括インデックス化」を実行できる必要があります。たとえば、「SELECT id, text_to_index FROM documents;」のように指定します。
- フリーソフトウェアであり、データベースとしてMySQLを使用してLinux上で実行する必要がある
- 高速であること(MySQL の内部全文検索は除外)
これらの特性を持つ代替品として私が見つけたものは次のとおりです。
- Solr (Lucene ベース)
- ElasticSearch (Lucene ベース)
- スフィンクス
私の質問:
- 比較するとどうでしょうか?
- 何か代替案を見逃していませんか?
- それぞれのユースケースは異なることは承知していますが、特にない特定のパッケージを使用したいですか?
ベストアンサー1
私はもう 2 年近く Solr を使い続けていますが、Sphinx は使ったことがないので、明らかに偏りがあります。しかし、ドキュメントや他の人の意見を引用して、客観的な意見を述べるように努めます。また、私の回答に修正を加えるつもりです :-)
類似点:
- Solr と Sphinx はどちらもすべての要件を満たします。どちらも高速で、大量のデータを効率的にインデックス化して検索できるように設計されています。
- どちらも、トラフィックの多いサイトが使用している長いリストを持っています(ソル、スフィンクス)
- どちらも商用サポートを提供しています。ソル、スフィンクス)
- どちらも複数のプラットフォーム/言語向けのクライアントAPIバインディングを提供しています(スフィンクス、ソル)
- どちらも分散して速度と容量を増やすことができます(スフィンクス、ソル)
違いは次のとおりです。
- Solr は Apache プロジェクトなので、当然 Apache2 ライセンスです。SphinxはGPLv2ですつまり、商用アプリケーションにSphinxを埋め込んだり拡張したり(単に「使用」するのではなく)する必要がある場合は、商用ライセンスを購入する必要があります(根拠)
- Solrは簡単に埋め込み可能Java アプリケーションで。
- Solrは、実証済みの技術であるLuceneの上に構築されています。8歳とともに巨大なユーザーベース(これはほんの一部です)。Lucene に新しい機能や高速化が導入されるたびに、Solr にもそれが導入されます。Solr にコミットしている開発者の多くは、Lucene コミッターでもあります。
- Sphinx は RDBMS、特に MySQL とより緊密に統合されます。
- SolrはHadoopと統合して分散アプリケーションを構築
- SolrはNutchと統合して、クローラーを備えた本格的なウェブ検索エンジンを迅速に構築します。。
- SolrはMicrosoft Word、PDFなどの独自形式をインデックスするスフィンクスできない。
- Solrにはすぐに使えるスペルチェッカー。
- Solrにはすぐに使えるファセットサポートスフィンクスのファセットより多くの作業が必要。
- Sphinx ではフィールドデータの部分的なインデックス更新は許可されません。
- スフィンクスでは、すべてのドキュメント ID は一意の符号なしゼロ以外の整数である必要があります。. ソル多くの操作では一意のキーさえ必要ありません一意のキーは整数または文字列のいずれかになります。
- Solrはサポートしていますフィールドの崩壊(現在は追加パッチとしてのみ) 同様の結果が重複しないようにします。Sphinx はこのような機能を提供していないようです。
- その間SphinxはドキュメントIDのみを取得するように設計されていますSolr では、ほぼあらゆる種類のデータを含むドキュメント全体を直接取得できるため、外部データ ストアからの独立性が高まり、余分なラウンドトリップが削減されます。
- Solrは、埋め込みで使用される場合を除き、Java Web コンテナTomcatやJettyなど、追加の特定の構成と調整(または、桟橋を含むで起動するだけです
java -jar start.jar
。Sphinx には追加の設定はありません。
関連する質問: