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