Получение результатов поиска Hibernate прямо из индекса Lucene

Как я могу выполнить поиск с помощью 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.Финал

Hibernate Core 4.1.6.Финал

Lucene 3.5


person HipsterZipster    schedule 10.09.2012    source источник


Ответы (1)


взгляните на функцию проецирования Hibernate Search, как описано в документы. Ключ состоит в том, чтобы вызвать query.setProjection со списком имен полей, которые вы хотите получить из индекса. Что-то типа:

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

Обратите внимание, что в результате вы получите массивы объектов, а не управляемые объекты Hibernate.

person Hardy    schedule 11.09.2012