gpt4 book ai didi

java - Hibernate Search java spring,仅搜索具有指定id的实体

转载 作者:行者123 更新时间:2023-12-02 09:51:08 25 4
gpt4 key购买 nike

当我想搜索具有特定 ID 的实体时遇到问题。我执行了 fullTextQuery,一切正常,当我想说时

仅在这些实体中搜索(提供的 ID 列表):

+(title:slovakia~2 leadText:slovakia~2 body:slovakia~2 software:slovakia~2) +verified:true +eid:(113 | 112 | 3)

enter image description here

然后我得到 0 个结果,这些实体被索引并持久化,一切都应该正常工作,但它没有返回任何结果。

这是定义的实体属性:

@Id
@GeneratedValue
@Field(name = "eid")
@FieldBridge(impl = LongBridge.class)
private long id;

我已经尝试过,没有现场桥,使用TermVector.YES并且也没有任何额外的@Field..注释。所有结果要么异常,要么没有结果。

在特定 ID 中搜索的正确方法是什么?

例如,这是工作查询: enter image description here

创建查询如下所示:

    return Optional.of(getQueryBuilder()
.keyword()
.onField("eid")
.matching(stringBuilder.toString())
.createQuery());

最佳答案

您尝试使用的语法 (113 | 112 | 3) 在此上下文中不正确。不解释 keyword 查询的参数,特别是不支持运算符。

使用与任何提供的 ID 匹配的 boolean 连接:

List<String> eids = ...;

QueryBuilder qb = getQueryBuilder();

BooleanJunction<?> idJunction = qb.bool();

for (String eid : eids) {
idJunction.should(
qb.keyword()
.onField("eid")
.matching(eid)
.createQuery()
);
}

return idJunction.createQuery();

请注意,如果您想添加其他查询,则不应使用同一联结。使用另一个包含 idJunction.createQuery() 作为其子句之一的联结。

关于java - Hibernate Search java spring,仅搜索具有指定id的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56318316/

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