hibernate搜索(Lucene + hibernate核心)如何工作?

时间:2012-08-22 09:17:23

标签: java hibernate lucene hibernate-search

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

谢谢!

2 个答案:

答案 0 :(得分:2)

不,你需要创建一个Lucene Query来对抗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 ..

searchFieldsString[],其中包含要搜索的字段列表。

编辑:更多解释。

答案 1 :(得分:1)

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