web-dev-qa-db-ja.com

検索エンジン-LuceneまたはSolr

製品カタログ管理ソフトウェアに検索エンジンを統合する必要があります。カタログは4〜5分を超えると予想されます。複数のテーブルにまたがるリレーショナルデータを持つレコード。私たちの開発プラットフォームはAsp.Net 3.5であり、Luceneでいくつかの予備的な作業を行いましたが、それが良いことがわかりました。しかし、私たちはSolrを知り、実装、タイムライン、定期メンテナンス、パフォーマンス、機能の観点からLuceneとSolrを比較するための実用的なヒントを探していました。ガイダンスやポインタは本当に役に立ちます。ありがとう。

52
Vikram

Lucene:

Apache Luceneは、完全にJavaで記述された高性能でフル機能のテキスト検索エンジンライブラリです。全文検索を必要とするほとんどすべてのアプリケーションに適したテクノロジーです。

Solr:

Solrは、Lucene Java検索ライブラリに基づくオープンソースのエンタープライズ検索サーバーであり、XML/HTTPおよびJSON API、ヒットの強調表示、ファセット検索、キャッシング、レプリケーション、Web管理インターフェースなどを備えています。 。

基本的に、LuceneはSolrに埋め込まれており、純粋に全文検索ライブラリーであり、プロジェクトに埋め込まれて全文検索機能を提供することを目的としています。 Solrにはさらに多くの機能と管理機能があり、カスタムコードを記述せずに構造化データを検索したり、CSVファイルからデータを読み込んだり、ユーザー入力の許容的な解析、ファセット検索、結果の一致するテキストの強調表示、さまざまな検索結果の取得を行うことができます形式(XML、JSON、...) Solr機能のページ を確認し、プロジェクトに関連する機能があるかどうかを確認します。

41
dcruz

アンドリュークレッグに同意する必要があります。多くのJava開発者タイプがLucene対Solrを見るとき、Luceneは単なるライブラリであるため、よりフレンドリーに見えます(POJJ:Plain Old Java Jar !)、他のライブラリと同様に、組み込みが簡単に見えますが、複雑なHTTPを介して通信する独立したプロセスとしてSolrを立ち上げるのは複雑です。

ただし、ほとんどすべての検索ユースケースで、Solrが正しいアプローチだと思います。検索の複雑さのほとんどは直接の初期統合ではなく、検索の調整、需要を満たすためのスケーリング、および開発者中心の世界からシステムの世界に存在するインデックスを維持するというあいまいな領域にあるためです。そしてSolrはそれらすべてのニーズをうまく処理します。

18
Eric Pugh

Dcruzが言うように、SolrはとにかくLuceneを使用するため、有効な比較ではありません。

Luceneは検索アプリを構築するためのツールキットで、SolrはLuceneで構築された検索アプリです。

IMOあなたはクレイジーになるだろうnot Solrを使用することで、他の方法で自分で記述しなければならない多くの「配管」が提供されます-データを吸い出すための構成可能なデータインポートハンドラーのようにRDBMSまたはXMLリポジトリの。

さらに、それはあなたにあなたにウェブ管理インターフェースと他の鐘と笛を与えます。

6
Andrew Clegg

考慮すべきことの1つは、これら2つの環境(Java/.NET)を混在させると、アプリケーションのセットアップがいかに困難になるかです。 Lucene.NETライブラリを使用する場合は、必要な外部依存関係のインストールを制限して、展開を効率化できます。

考慮すべきもう1つのことは、あなたが必要 Solrが提供する追加機能ですか? A(nother) Web管理インターフェイスはおそらく素晴らしいですが、リスクエンベロープを拡張します。Javaを配置すると、別のサービスによりパッチ管理が強化されます。 .NETのみがパッチ戦略を標準のWindows更新モデルにすることができます。

もちろん、Lucene.NETを使用して実装をローリングすると、独自の開発および保守コストが発生しますが、私の経験では、それは簡単で扱いやすいものでした。

2
Ira Miller

私たちはあなたとまったく同じ状況にあります。残念ながら、私は直接評価プロセスに関与していませんでしたが、最終的にはLuceneと統合されたSolrを使用します。

主な利点は、dcruzで説明されているように、さまざまな形式です。そのため、Solr-Consumerにクエリを実行し、検索結果を簡単に解析してWebページに表示できるXMLデータとして返すことができます。

1
Juri

あなたの焦点を少しシフトさせてください:あなたはあなたの製品のアーキテクチャの変化に備えていますか? LuceneとSolrはどちらもJavaで実装されています。したがって、それをホストするためにさらに別のWebコンテナーを実行することになります(したがって、言うまでもなくプラットフォームの純粋さが失われます)。 Luceneは.NET( Lucene.NETプロジェクト )に移植されましたが、Solrは私の知る限りではありませんでした。たまたまSQL Serverを使用している場合(プラットフォームを考慮している可能性があります)、代わりにSQL Serverのフルテキスト検索を検討することをお勧めします。これは、ほぼ同じ機能(Lucene/Solrほど豊富ではありませんが)であり、通常は(ほとんどの場合)既存のアプリケーションに組み込むのがはるかに簡単です。それに加えて、メンテナンスが簡素化され(データベースと一緒に提供され)、単一のプラットフォーム内にとどまることもできます。

1
AlexS