2013-10-11 143 views
0

我從hibernate文檔構建了一個非常基本的hibernate搜索。我在限制結果方面遇到了困難,並且希望得到一些關於我做錯了什麼的建議。Hibernate搜索限制結果

方案

比方說,我使用的是一個實體的描述標題像這樣

@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO) 
private String name; 

與添加到索引

1. Dell Laptop 
2. Dell Desktop 
3. HP Desktop 

我的搜索看起來像那麼以下數據,

FullTextSession fullTextSession = Search.getFullTextSession(sessionManager.getSession()); 
    QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Computer.class).get(); 
    Query luceneQuery = queryBuilder.keyword().onFields("name").matching(keyword).createQuery(); 

    org.hibernate.search.FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, Computer.class); 

現在一切都運行良好,當你當你像這樣一個做搜索使用以下關鍵字搜索,

Dell returns Dell Laptop, Dell Desktop 
Desktop returns Dell, HP 

但是,它不限制的結果正確

Dell Desktop returns Dell Laptop, Dell Desktop, HP Desktop. 

我會怎樣限制結果只返回單個匹配?

回答

1

「戴爾桌面」可能不是一個單詞。你應該嘗試搜索它作爲一個短語。

Query luceneQuery = queryBuilder.phrase().onField("name").sentence(keyword).createQuery(); 
org.hibernate.search.FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, Computer.class); 

你也可以使用作爲記錄了Hibernate Search的文檔,Chapter 5,實施例5.2

查詢分析器