2010-11-23 15 views
2

Wicket + Spring + JPA/Hibernateスタックを使用するアプリケーションでは、データベースに保存されたレコードがフィルタリングされるかなり複雑な検索機能を持つInbox/Searchページがあります無数のフィルタリングオプションを使用してこれまでは、JPA Criteria APIを使用してデータベースクエリを作成しましたが、かなり面倒です。私は、フルテキスト検索機能が本当に必要ないのに、私はちょうど(私がそれについて読んだところから)クエリを生成するのが少し楽になるかもしれないと思っても、Hibernate-Searchがこれに適しているのだろうかと思っていましたか?Criteria APIの代わりにComplexQueryを使用するHibernate-Search

答えて

1

申し訳ありませんが、Hibernate SearchはLucenceに基づいています。 ではなく、他のクエリ言語です。

Luceneは、データベース内のエンティティを検索しません。Luceneインデックス内の属性を検索します。 Hibernate Searchは、データベースからLuceneインデックスにエンティティを接続する機能を追加します。

Hibernate SearchとLuceneは高度な全文検索が必要なときに作成ツールです。しかし、あなたがそれを必要としなければ、それは不自然な仕事(そして問題)の多くです。

したがって、Luceneを使用しない限り、Hibernate Searchはニーズに合っていません。

+0

"Luceneを使わない限り、Hibernate Searchはあなたのニーズに合っていません。" - 私には奇妙な声明のようです。 Luceneを使用するかどうかは、Hibernate Searchが有用かどうかとは関係ありません。重要な点は、Hibernate Coreといっしょにフルテキスト検索が必要かどうかです。この場合、Hibernate Searchはあなたのためのものです。 (そしてそれはLuceneに依存します)。 – Hardy

0

Hibernate Searchの主な使用例は全文検索です。ただし、単純な属性/条件の索引付け/検索にも使用できます。クエリを書くための構文が条件クエリより簡単かどうかは味わいの問題です。 フルテキスト検索機能を使用していない場合は、アプリケーションに追加のステップを追加することを検討する必要があります。 Luceneインデックスに対して検索クエリが実行されます(投影が使用されていなければ、エンティティIDを返します)。一致したエンティティはデータベースからフェッチされます。 一方、Hibernate Searchを使用すると、(可能であれば)いくつかの全文検索機能をいくつかの条件に追加することで、検索を「改善する」ことは簡単です。

検索を使用しているかどうかにかかわらず、キーは検索式または条件式のクエリをプログラムによって作成するフレームワークを作成することです。

関連する問題