質問

Wicket+Spring+JPA/Hibernate Stackを使用するアプリには、非常に複雑な検索機能を備えた受信トレイ/検索ページがあり、データベースに保存されたレコードが無数のフィルタリングオプションを使用してフィルタリングされます。これまでのところ、JPA Criteria APIを使用してデータベースクエリを作成しましたが、かなり面倒になっています。フルテキストの検索機能は本当に必要ないにもかかわらず、Hibernate-Searchがこれに適しているのではないかと思っていましたが、クエリを作成するのが少し簡単だと感じています。

役に立ちましたか?

解決

申し訳ありませんが、Hibernate検索はLucenceに基づいています。そうです いいえ 他のクエリ言語。

Luceneはデータベース内のエンティティをセラックしておらず、Lucene IndexでAttibutesを検索します。 Hibernate検索機能を追加して、データベースからエンティティをLuceneインデックスに接続します。

Hibernate SearchとLuceneは、高度な全文検索が必要な場合にツールを作成します。しかし、あなたがそれを必要としないなら、それは多くの不安定な仕事(および問題)だけです。

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

他のヒント

Hibernate検索の主要なユースケースは、フルテキスト検索です。ただし、単純な属性/基準のインデックス/検索にも使用できます。クエリを書くための構文が基準クエリよりも簡単であるかどうかは、好みの問題です。 FullText検索機能を使用していない場合は、アプリケーションに追加のステップを追加していると考える必要があります。検索クエリは、エンティティIDを返すLuceneインデックスに対して実行されます(投影が使用されない限り)。その後、マッチングエンティティはデータベースからフェッチされます。一方、Hibernate検索を使用すると、いくつかのフルテキスト検索機能を基準の一部に追加することで、検索を「改善」することができます(可能であれば)。

検索を使用しているかどうかにかかわらず、重要なのは、検索または基準クエリなど、クエリをプログラム的に構築する何らかのフレームワークを作成することだと思います。

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