2

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

4

2 に答える 2

1

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

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

Hibernate Search と Lucene は、高度な全文検索が必要な場合の作成ツールです。しかし、それが必要ない場合は、多くの不要な作業 (および問題) が発生するだけです。

そのため、Lucene を使用しない限り、Hibernate Search はニーズに適合しません。

于 2010-11-23T13:11:15.897 に答える
0

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

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

于 2010-12-30T11:36:33.070 に答える