gpt4 book ai didi

hibernate - QueryBuilder 中的 Lucene 条件 AND

转载 作者:行者123 更新时间:2023-12-02 18:54:58 25 4
gpt4 key购买 nike

个人,我在查询中遇到问题,想要将 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 条件。

最佳答案

您对使用“必须”和“应该”子句的想法是正确的。您可以构建一个查询,使用它们有效地创建逻辑 AND。你错过了一件事。AND 的结构,如:

query1 AND query2

将是:

+query1 +query2

您的示例在第一个查询中缺少“+”或 Must 子句,因此虽然第二个查询是必需的,但第一个查询不是必需的,尽管它会影响结果权重。

所以,具体来说,你想要的是

builder.bool()  
.must(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();

或者...

(+((campo01:teste campo02:test campo03:teste) campo01:*teste* campo02*teste* campo03:*teste*) +campo04:0)

关于hibernate - QueryBuilder 中的 Lucene 条件 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com