個人的な質問でクエリに問題があり、用語に AND 句を入れたいのですが、取得できず、検索を試みても成功しませんでした。
例に従って、クエリを返します (私は自分の指標で 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 条件を入れることです。