2017-04-10 28 views
1

我无法使用hibernate lucene search这里的条件使用hibernate lucene search这里我能够搜索基于以下任何keyword但我在这里有多个关键字,所以我怎么能应用限制通过使用这个关键字请帮我申请多个限制在hibernate lucene search 。提前感谢这里是我的查询。如何在Hibernate Lucene搜索中添加多个限制?

@Override 
public List getCompaniesBasedOnSearch(String keyword,String keyword2,String keyword3) throws InterruptedException {FullTextSession fullTextSession = Search.getFullTextSession(session); 
    fullTextSession.createIndexer(Company.class).startAndWait(); 

    QueryBuilder qb = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Company.class).get(); 
    org.apache.lucene.search.Query query = qb.keyword().onFields("company_name","locations.city","locations.state").matching(keyword1).createQuery(); 

    org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(query, Company_Info.class); 

回答

1

是......。我终于得到了解决,我们可以通过使用组合queries.Kindly经过以下

QueryBuilder qb = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Student.class).get(); 
    org.apache.lucene.search.Query query = qb.bool().must(qb.keyword().onFields("name","country","skills.skill").matching(keyword).createQuery()) 
      .must(qb.keyword().onField("skills.skill").matching(skill).createQuery()) 
      .must(qb.keyword().onField("locations.city").matching(location).createQuery()) 
      .must(qb.keyword().onField("jobStatus").matching("active").createQuery()) 
      .must(qb.keyword().onField("postedOrSaved").matching("posted").createQuery()) 
      .createQuery(); 
    org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(query, Jobs.class); 
    List<Jobs> result = hibQuery.list(); 

在这里,我中student实体领域进行(("a" OR "b" OR "c") AND ("d") AND ("e") AND ("f")操作添加在Hibernate中Lucene的搜索多重限制。

相关问题