0

データベースから実際のエンティティを取得せず、代わりにこれらのエンティティのドキュメントキャッシュレコードを返す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);  

バージョン:

休止状態の検索4.1.1。最終

HibernateCore4.1.6。最終版

Lucene 3.5

4

1 に答える 1

2

ドキュメントで説明されているように、HibernateSearchのプロジェクション機能をご覧ください。重要なのは、インデックスから取得するフィールド名のリストを使用してquery.setProjectionを呼び出すことです。何かのようなもの:

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

ただし、結果として、管理対象のHibernateエンティティではなくオブジェクト配列が取得されることに注意してください。

于 2012-09-11T07:58:28.077 に答える