我正在使用Hibernate Search進行第一次操作,我有些疑惑。我很感激你能否告訴我一些建議。Hibernate搜索關於條件的性能建議
我有以下實體:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Field(name = FIELD_LASTNAME, analyze = Analyze.YES, index = Index.YES)
private String name;
private int age;
.....
因此,對於搜索用戶,他們的年齡爲25歲我做到以下幾點:
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(User.class).get();
Query luceneQuery = qb.keyword().onFields("name").matching("Geor").createQuery();
Query jpaQuery = fullTextEntityManager
.createFullTextQuery(luceneQuery, User.class)
.setCriteriaQuery(fullTextEntityManager
.createCriteria(User.class)
.add(Restrictions.eq("user.age", 25)));
我的問題是:
- 是它正確使用標準來過濾信息? /何時使用它有用?
- 我應該使用@Field爲屬性「年齡」編制索引嗎?
- 我應該索引所有我需要用來過濾的實體屬性嗎?
- 性能如何,使用索引值還是不?
- 如何選擇哪些值必須由lucene索引?
在此先感謝
非常感謝您的回答。但是,爲什麼你說「Hibernate Search Lucene不應該和Hibernate ORM Criteria查詢混在一起,這是不被支持的。」? 在我的例子中,我正在使用Criteria和它的工作。我正在獲得結果。 – devops85 2014-11-25 13:16:20
它不被支持,你可能會得到錯誤的結果。檢查Hibernate Search文檔它包含一個關於這個的警告。 – Hardy 2014-11-25 13:38:30
哦,好的。 Thankss! – devops85 2014-11-25 15:37:17