如何创建 lucene 查询,它应该给出只匹配给定两个字段的两个给定值的对象?
How to create lucene query which should give objects that only matches two given value with given two field?
我正在使用 infinispan 缓存 distribution.We 有一些场景,比如必须根据确切的字段 value.So 获取对象,我们尝试了 lucene。
与任何字段匹配的类似场景的值应该给出 object.For 我们已经写过 follow.it 工作正常
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();
但是,不知道如何使用适当的方式编写与两个不同字段完全匹配的查询 value.I 看到了一些示例,例如 follow
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();
我正在使用 infinispan 缓存 distribution.We 有一些场景,比如必须根据确切的字段 value.So 获取对象,我们尝试了 lucene。
与任何字段匹配的类似场景的值应该给出 object.For 我们已经写过 follow.it 工作正常
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();
但是,不知道如何使用适当的方式编写与两个不同字段完全匹配的查询 value.I 看到了一些示例,例如 follow
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();