2016-11-08 117 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