Java hibernate搜索(Lucene&x2B;hibernate核心)是如何工作的?

Java hibernate搜索(Lucene&x2B;hibernate核心)是如何工作的?,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我正在使用hibernate搜索(构建在Lucene之上)。我已经创建了索引。现在,如果我进行搜索,它是否只从创建的索引中获取结果?我的意思是它也从数据库表中查询数据吗 谢谢 Hibernate Search就像是使用Hibernate的项目的强大助手,这些项目需要全文搜索功能。因此,“Hibernate搜索”本身不会在数据库中进行搜索。它将只在索引中搜索。这就是Lucene集成部分。Hibernate集成部分主要围绕监听器,每次对实体执行某些操作(保存、更新、删除等)时,监听器都会将实体索引为

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


谢谢

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

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

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
是一个
字符串[]
,包含要搜索的字段列表


编辑:更多解释。

不确定您是否在Javaworld中看到这篇文章,详细讨论了使用Lucene的hibernate搜索::感谢您的回复。你的意思是说索引本身有数据?我所理解的是,lucene只创建索引,如果根据索引进行搜索,结果会从数据库中检索出来吗?如果我错了,请纠正我。这取决于您的设置,您可以通过Hibernate search中的
@index
@Field
注释从搜索索引中包括/排除实体和字段。包含的字段将出现在搜索索引中。(取决于带或不带完整数据的
@Field
注释的
store
属性。感谢您的回复。我有一个字段注释为:@Field(index=index.TOKENIZED,store=store.NO,name=“someName”)。我只为一个字段编制了索引。现在,如果我进行搜索,是否会根据创建的索引从数据库中检索结果?