1

私は休止状態の検索(Luceneの上に構築)を使用しています。インデックスを作成しました。検索すると、作成されたインデックスからのみ結果が得られますか?つまり、データベーステーブルからのデータもクエリしますか?

ありがとう!

4

2 に答える 2

2

Searchいいえ、次のようにHibernatesのクラスに対して実行するLuceneクエリを作成する必要があります。

MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_29, searchFields, new KeywordAnalyzer());
org.apache.lucene.search.Query query = parser.parse("Text from entity to search for"); // Or any other valid query
FullTextSession fullTextSession = Search.getFullTextSession(hibernateSession);
org.hibernate.Query hibernateQuery = fullTextSession.createFullTextQuery(query, YOUR_TARGET_ENTITY_HERE.class);
List result = hibernateQuery.list();

なぜ彼らがHibernate結果クラスにも名前を付けたのか私にはわかりQueryません。

searchFieldsString[]検索するフィールドのリストが含まれています。

編集:より多くの説明。

于 2012-08-22T09:28:29.610 に答える
1

Hibernate Searchは、全文検索機能を必要とするHibernateを使用するプロジェクトの強力なヘルパーのようなものです。そのため、「HibernateSearch」自体はデータベース内の検索を実行しません。インデックスのみを検索します。これがLucene統合の部分です。Hibernate統合の部分は主にリスナーの周りにあり、エンティティで何らかの操作(保存、更新、削除など)を行うたびに、エンティティをドキュメントとしてインデックス付けします。

于 2012-08-22T09:28:06.803 に答える