1

我正在使用休眠搜索(建立在 Lucene 之上)。我创建了索引。现在,如果我进行搜索,它是否仅从创建的索引中获取结果?我的意思是它是否也从数据库表中查询数据?

谢谢!

4

2 回答 2

2

不,您需要创建一个 Lucene 查询来针对 Hibernates 的Search类运行,如下所示:

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[]包含要搜索的字段列表。

编辑:更多解释。

于 2012-08-22T09:28:29.610 回答
1

Hibernate Search 就像是使用 Hibernate 的需要全文搜索功能的项目的强大帮手。因此,“Hibernate Search”本身不会在数据库中进行搜索。它只会在索引中搜索。这就是 Lucene 集成部分。Hibernate 集成部分主要围绕侦听器,每次您对实体执行某些操作(保存、更新、删除......)时,它都会将实体索引为文档。

于 2012-08-22T09:28:06.803 回答