効率的な無料テキスト検索、冬眠検索、またはルーセンに適した方はどれですか?

StackOverflow https://stackoverflow.com/questions/5804456

  •  24-10-2019
  •  | 
  •  

質問

Spring MVC、Spring、Hibernateを使用してWebアプリケーションを開発しています。

アプリケーションに効率的な無料テキスト検索機能を追加する必要があります。このためには、Hibernate検索(フードの下でLuceneを使用)または直接ルーセンのいずれかを使用することを考えています。

私たちはすでにアプリケーションで冬眠を使用しているので、私たちにとって最良の選択肢は何ですか?一方の長所と短所は何ですか?

ありがとう。

役に立ちましたか?

解決

あなたはそれを自分で言った - あなたは何らかの形でルーセンを使うだろう。

Raw Lucene APIはそれほど使いやすいものではありません。冬眠検索よりもはるかに低レベルです。すでに冬眠を使用している場合は、それは簡単です - 冬眠検索を使用してテキスト検索機能を実装してください。

他のヒント

免責事項:私はHibernate Searchの開発者の1人です。

このプロジェクトの目標は、LuceneやSolrと競争することではなく、Hibernateアプリケーションとの統合を可能な限り促進し、2つの世界を同期して維持し、すべてのマッピングおよびCRUD操作を複製することを避けることです。

いくつかの一般的なヘルパーと素晴らしいカプセル化を提供しますが、冬眠検索はルーセンAPIへの直接的な参照を引き渡すこともできます。また、インデックスへの冬眠検索への書き込みには、ほとんどの既知の要件を解決する共通のパターンが提供されますが、非常に非標準の要件がある場合は、書かれたドキュメントを完全に制御できます。

Solrは優れた代替品ですが、それは別のサーバーであるため、REST APIを介してそれと対話する必要があります。管理する2番目のサービスを持つことは常に必要ではありません。もちろん、リモートの呼び出しは、ルーセンとそのすべての内部フィルターとキャッシュへの直接的な参照ほど効率的ではありません。 Luceneのすべての機能がリモートAPIを介して公開できるわけではありません。「低レベルの」操作を実行する必要がある場合、これがSolrで実装されていない場合は、(SolRにパッチを適用せずに)できません。それでもSolrは非常にかわいいです。特に、インデックスを他の非Javaアプリケーションと共有したい場合は、Hibernate検索用のSolrバックエンドを追加して、最終的にSolrサーバーを同期させることができます(特に興味がある場合、場合によってはおそらく手助け)。

最後に、Lucene APIは本当に難しいコアです。私たちは、Hibernate検索を使用して安定したAPIを人にさらす間、最高のパフォーマンスを提供するために最適な使用を行うために多くの努力を費やします。基本的には、すべてのリリースは、最新の「ドロップイン」パフォーマンスブーストを提供するために後方互換性がありましたLuceneからの最大のトリック - 実際にAPIを非常に頻繁に変更します。これらの変更は常にエキサイティングですが、適切な抽象化を使用しない場合、アプリケーションでそれを維持する準備をしてください。

Luceneを使用するもう1つの方法は、Solrとして知られているMiddlman APIを取得することです。 SolrはLuceneに接続し、Perfom HTTPは検索を求めます。 Solrが消費するものをXMLを構築および解析する必要があることに注意してください。 Luceneのすべての機能はSolRを介して見渡され、本当に役立つはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top