2016-11-08 111 views
0

我需要使用Hibernate Search查詢來檢索特定的列。我嘗試了預測,但沒有成功。請幫助我實現這一點,任何意見或建議將不勝感激。 這是我的查詢:如何使用hibernate lucene搜索從表中檢索特定列?

 FullTextSession fullTextSession = Search.getFullTextSession(session); 
    QueryBuilder b = fullTextSession.getSearchFactory() 
      .buildQueryBuilder().forEntity(Company.class).get(); 
     org.apache.lucene.search.Query luceneQuery = 
      b.keyword() 
       .onFields("company_name","city") 
       .matching("search keyword here!") 
       .createQuery(); 
     org.hibernate.Query fullTextQuery=fullTextSession.createFullTextQuery(luceneQuery).setProjection().setProperties("company_name");  
     List result = fullTextQuery.list(); 
+0

你應該告訴我們的預測查詢,如果您希望我們可能建議爲什麼沒有奏效。另外,首先,使用「new org.apache.lucene.search.MatchAllDocsQuery()」作爲luceneQuery可能會很有用,並查看投影的內容。 – Sanne

+0

Thnaks爲您的信息sanne –

回答

0

您可以使用預測。 但在此之前,你必須存儲在使用的列值店= Store.yes

@Field(store=Store.YES) 
private String name; 

在程序中,你可以使用投影

Session session = sessionFactory.openSession(); 

FullTextSession fullTextSession = Search.getFullTextSession(session); 
fullTextSession.createIndexer().startAndWait(); 

QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Employee.class).get(); 
org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword().onFields("name").matching(name).createQuery(); 
org.hibernate.search.FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, Employee.class); 
fullTextQuery.setProjection("name"); 

List list = fullTextQuery.list(); 
+0

感謝您回答@vrb –

+0

你可以在http://vishalbiradar.blogspot.in找到代碼 – vrb