2016-11-08 2 views
0

최대 절전 모드 검색 쿼리를 사용하여 특정 열을 검색해야합니다. 예상과 함께 시도했지만 효과가 없습니다. 이를 성취하도록 도와주세요. 조언이나 제안을 부탁드립니다. 내 검색어는 다음과 같습니다.최대 절전 모드 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

Thannaks for your info sanne –

답변

0

투영을 사용할 수 있습니다. 당신이 가능을 우리를 원하는 경우 하지만 그 전에 당신이 열 값 사용하여 저장소를 저장해야 = 프로그램에서

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

Store.yes, 당신은 투사 사용할 수 있습니다

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

관련 문제