Pessoal estou com um problema em uma consulta, quero colocar a clausula AND em um termo, porem não estou conseguindo e tentei procurar e sem sucesso.
Segue o exemplo e o retorno da query (estou usando o Luke para testar as condições em cima do meu indece e o resultado são diferentes)
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();
Esse código gera a seguinte query lucene:
(((campo01:teste campo02:test campo03:teste) campo01:*teste* campo02*teste* campo03:*teste*) +campo04:0)
Porem essa query está retornando um resultado maior que o esperado. Realizando testes com o Luke percebi que o Must não era o ideal, precisando ser o AND no lugar.
(((campo01:teste campo02:test campo03:teste) campo01:*teste* campo02*teste* campo03:*teste*) AND campo04:0)
Com isso o resultado está correto, porem não consegui fazer com que o query build criar esse resultado.
Alguem pode ajudar ou caso tenha ficado alguma dúvida. O que eu quero mesmo é como colocar uma condição AND em um determinado campo.