Hibernate 如何创建lucene查询,该查询应该提供只匹配两个给定值和两个给定字段的对象?

Hibernate 如何创建lucene查询,该查询应该提供只匹配两个给定值和两个给定字段的对象?,hibernate,lucene,infinispan,Hibernate,Lucene,Infinispan,我正在使用infinispan缓存进行分发。我们有一些场景,比如必须根据精确的字段值获取对象。所以,我们尝试了lucene 与任何字段匹配的scenerio-like值都应该给出object。为此,我们编写了以下代码。它工作正常 SearchManager searchManager = Search.getSearchManager(indexingCache); QueryBuilder queryBuilder = searchManager.buildQueryBuilderForCla

我正在使用infinispan缓存进行分发。我们有一些场景,比如必须根据精确的字段值获取对象。所以,我们尝试了lucene

与任何字段匹配的scenerio-like值都应该给出object。为此,我们编写了以下代码。它工作正常

SearchManager searchManager = Search.getSearchManager(indexingCache);
QueryBuilder queryBuilder = searchManager.buildQueryBuilderForClass(IndexingCallData.class).get();
org.apache.lucene.search.Query luceneQuery = queryBuilder.phrase()
                          .onField("callerName").matching("6000")                         
                         .andField("calleeName").matching(filedValue)
                          .andField("callerNameForDisplay")
                          .andField("gatewayIdIngress")
                          .andField("gatewayIdEgress")
                          .andField("originalCalleeName")
                          .sentence("any value here")
                          .createQuery();
但是,我不知道如何用两个不同的字段和适当的值编写精确匹配的查询

org.apache.lucene.search.Query luceneQuery = searchManager.buildQueryBuilderForClass(IndexingCallData.class)
            .get()
            .keyword()        
            .onField("callerName").matching("6000")         
            .createQuery();

这里如何再添加一个条件。有人能帮我吗?我找到了解决办法。就是

org.apache.lucene.search.Query subluceneQuery = searchManager.buildQueryBuilderForClass(IndexingCallData.class)
            .get()
            .keyword()        
            .onField("callerName").matching("sipp")                     
            .createQuery();

         org.apache.lucene.search.Query subluceneQuery2 = searchManager.buildQueryBuilderForClass(IndexingCallData.class)
            .get()
            .keyword()        
            .onField("calleeName").matching(filedValue)                     
            .createQuery();

        org.apache.lucene.search.Query luceneQuery = searchManager.buildQueryBuilderForClass(IndexingCallData.class)
            .get()
            .bool()                         
            .must(subluceneQuery)
            .must(subluceneQuery2)
            .createQuery();