3
個人我在查詢中遇到問題,想將AND子句放在一個術語中,但是我沒有得到並嘗試搜索沒有成功。Lucene條件AND在QueryBuilder中
按照例子,返回查詢(我使用的是在我indece測試盧克條件和結果是不同的)
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)
但是,此查詢返回的結果比預期的要大。與盧克進行測試意識到,必須是不理想的,需要成爲和。
(((campo01:teste campo02:test campo03:teste) campo01:*teste* campo02*teste* campo03:*teste*) AND campo04:0)
因此,結果是正確的,但我無法使生成查詢來創建此結果。
任何人都可以幫助或有任何問題依然存在。我真正想要的是將AND條件放在特定的領域。
謝謝,非常完美。 –