私は休止状態の検索(Luceneの上に構築)を使用しています。インデックスを作成しました。検索すると、作成されたインデックスからのみ結果が得られますか?つまり、データベーステーブルからのデータもクエリしますか?
ありがとう!
私は休止状態の検索(Luceneの上に構築)を使用しています。インデックスを作成しました。検索すると、作成されたインデックスからのみ結果が得られますか?つまり、データベーステーブルからのデータもクエリしますか?
ありがとう!
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
ません。
searchFields
String[]
検索するフィールドのリストが含まれています。
編集:より多くの説明。
Hibernate Searchは、全文検索機能を必要とするHibernateを使用するプロジェクトの強力なヘルパーのようなものです。そのため、「HibernateSearch」自体はデータベース内の検索を実行しません。インデックスのみを検索します。これがLucene統合の部分です。Hibernate統合の部分は主にリスナーの周りにあり、エンティティで何らかの操作(保存、更新、削除など)を行うたびに、エンティティをドキュメントとしてインデックス付けします。