2012-09-10 123 views
0

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

@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的核心4.1.6.Final

的Lucene 3.5

回答

2

看看休眠的投影功能按照docs中的描述进行搜索。 关键是要调用query.setProjection与你想从索引检索字段名称的列表。例如:

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

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