个人我在查询中遇到问题,想将 AND 子句放在一个术语中,但是我没有得到并尝试搜索但没有成功。
按照示例并返回查询(我正在使用我的 indece 测试 Luke 条件,结果不同)
builder.bool()
.should(builder
.bool()
.should(builder.keyword()
.onFields("campo01", "campo02", "campo03")
.matching(query).createQuery())
.should(builder.keyword().wildcard().onField("campo01")
.matching("*" + query + "*").createQuery())
.should(builder.keyword().wildcard().onField("campo02")
.matching("*" + query + "*").createQuery())
.should(builder.keyword().wildcard().onField("campo03")
.matching("*" + query + "*").createQuery()).createQuery())
.must(builder.keyword().onField("campo04").matching(0).createQuery())
.createQuery();
此代码生成以下查询 lucene:
(((campo01:teste campo02:test campo03:teste) campo01:*teste* campo02*teste* campo03:*teste*) +campo04:0)
但是,此查询返回的结果比预期的要大。与 Luke 一起进行测试时,发现 Must 并不理想,需要将 AND 放在适当的位置。
(((campo01:teste campo02:test campo03:teste) campo01:*teste* campo02*teste* campo03:*teste*) AND campo04:0)
因此结果是正确的,但是我无法进行构建查询来创建此结果。
任何人都可以帮助或有任何问题。我真正想要的是在特定字段中放置一个 AND 条件。