直接从Lucene Index检索Hibernate搜索结果

时间:2012-09-10 18:35:03

标签: hibernate lucene full-text-search hibernate-search

如何使用Hibernate Search执行搜索,该搜索不会从数据库中检索实际实体,而只是返回这些实体的文档缓存记录?我确保在索引中存储我需要的字段。在此过程中,数据库将处于活动状态并且可用,我只想减少不必要的负载。

@Column
@Field (index = Index.YES, store = Store.YES)
private String title;

@Id
@Column
@DocumentId
@Field (store = Store.YES)
private String guid;

Session sess = sessionFactory.openSession();
FullTextSession fts = org.hibernate.search.Search.getFullTextSession(sess);
//returns matching Articles from database, how would I retrieve only the index records?
Query query = fts.createFullTextQuery(luceneQuery, Article.class);  

版本:

Hibernate Search 4.1.1.Final

Hibernate Core 4.1.6.Final

Lucene 3.5

1 个答案:

答案 0 :(得分:2)

查看docs中描述的Hibernate Search的Projection功能。 关键是使用要从索引中检索的字段名称列表调用 query.setProjection 。类似的东西:

query.setProjection( "field1", "field2", "field3" );

请注意,因此您将获得对象数组而不是托管的Hibernate实体。