ElasticSearch、Sphinx、Lucene、Solr、Xapian。どの用途にどれが適していますか? [closed] 質問する

ElasticSearch、Sphinx、Lucene、Solr、Xapian。どの用途にどれが適していますか? [closed] 質問する

私は現在、巨大なSQLクエリを使用するのではなく、他の検索方法を検討しています。エラスティックサーチ最近遊んだシューッ(検索エンジンの Python 実装)。

選択の理由を教えてください。

ベストアンサー1

ElasticSearch の作成者として、そもそもなぜこれを作成したのか、その理由を少し説明できるかもしれません :)。

純粋な Lucene の使用は困難です。本当に優れたパフォーマンスを実現したい場合、注意すべき点が数多くあります。また、これはライブラリであるため、分散サポートはなく、メンテナンスが必要な組み込み Java ライブラリにすぎません。

Lucene の使いやすさという点では、かなり昔 (今から約 6 年前) に、私は Compass を作成しました。その目的は、Lucene の使用を簡素化し、日常的な Lucene をよりシンプルにすることでした。私が何度も遭遇したのは、Compass を分散できるようにするという要件でした。私は、GigaSpaces、Coherence、Terracotta などのデータ グリッド ソリューションと統合することで、Compass 内からこれに取り組み始めましたが、それだけでは十分ではありませんでした。

本質的に、分散 Lucene ソリューションはシャーディングされる必要があります。また、HTTP と JSON がユビキタス API として進化したことで、さまざまな言語を使用するさまざまなシステムを簡単に使用できるソリューションが実現しました。

これが、私が ElasticSearch を作成した理由です。ElasticSearch は非常に高度な分散モデルを備え、ネイティブで JSON を話し、多くの高度な検索機能を公開しており、すべて JSON DSL を通じてシームレスに表現されています。

SolrもHTTP経由でインデックス/検索サーバーを公開するソリューションですが、エラスティックサーチはるかに優れた分散モデルと使いやすさを提供します (ただし、現在は検索機能の一部が欠けていますが、すぐになくなるわけではありません。いずれにせよ、すべてのCompass機能を ElasticSearch に組み込む予定です)。もちろん、ElasticSearch を作成したのが私なので、偏見がありますので、自分で確認する必要があるかもしれません。

Sphinxについては、私は使ったことがないのでコメントできません。私が参考にできるのはSphinxフォーラムのこのスレッドこれは ElasticSearch の優れた分散モデルを証明していると思います。

もちろん、ElasticSearch は分散化されているだけでなく、クラウドを念頭に置いて構築された機能も多数あります。サイトで機能リストを確認できます。

おすすめ記事