我正在使用休眠搜索(建立在 Lucene 之上)。我创建了索引。现在,如果我进行搜索,它是否仅从创建的索引中获取结果?我的意思是它是否也从数据库表中查询数据?
谢谢!
我正在使用休眠搜索(建立在 Lucene 之上)。我创建了索引。现在,如果我进行搜索,它是否仅从创建的索引中获取结果?我的意思是它是否也从数据库表中查询数据?
谢谢!
不,您需要创建一个 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[]
包含要搜索的字段列表。
编辑:更多解释。
Hibernate Search 就像是使用 Hibernate 的需要全文搜索功能的项目的强大帮手。因此,“Hibernate Search”本身不会在数据库中进行搜索。它只会在索引中搜索。这就是 Lucene 集成部分。Hibernate 集成部分主要围绕侦听器,每次您对实体执行某些操作(保存、更新、删除......)时,它都会将实体索引为文档。