2012-04-28 15 views
1

私はバックエンドの快適なWeb​​サービスでWebアプリケーションを構築しています。Apache LuceneベースのDAO?

私のテーブルの1つはかなりスタンドアロンです。つまり、行はジョインなしで幸せに生きることができ、必要なときにプライマリキーだけをフェッチする方法で他のテーブルから参照されます。しかし、このテーブルは多くの行を保持し、それに対して実行される検索はすべて「Lucene」と叫びます。 MySQLは妥当な応答時間でこれらのクエリを処理することができません。

私はこのテーブルを検索するためにLuceneを使用したいと思います。過去に私はSolrを広く使用していましたので、私は概念と用語に精通しています。私は、SQL-to-Luceneのインデックス同期の代わりに上記の私の状況を考えれば、Luceneをこの特定のエンティティの標準的なストレージとして単に使用してはならない理由は理解できません。基本的には、この特定のテーブルの現在のHibernate DAOの実装を置き換える "Lucene DAO"実装をしたいと思います。

だから私の質問は以下のとおりです。

  1. 私はそれを回避し、SQLツーインデックス同期に固執すべき理由何らかの理由はありますか?
  2. 「Lucene DAO」が実行可能なアプローチである場合、そのようなものの基礎を提供するライブラリはありますか?私は検索しようとしましたが、何も見つかりませんでした。
  3. 私は見つけたのは半分しかありませんが、検索のためだけに試してみることができます。Hibernate Search Hibernate Searchを使用している人はいますか?

編集:私は今、一目で私が探しているものをあるように思われCompassに遭遇しました。誰もそれについて何か経験がありますか?


編集#2:コンパスを中止と全く同じ(サービスではなく成分)されていないElasticSearchで置換されています。 Hibernate Searchは私が探しているものではないことが判明しました。要するに、これは有効なアプローチですが、当面はこのようなDAOを実装する必要があります。

答えて

2

私はこのユースケースのためにSQLを捨て、Luceneストレート、チェイサーは使用しません。

Luceneを使用したクエリは、LIKEではなくn-gramsの方がはるかに豊富になります。

関連する問題