gpt4 book ai didi

java - 是否可以使用 Hibernate Search 5.X 对 @Id 字段使用数字编码

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:47 25 4
gpt4 key购买 nike

在从 4.5 版升级到 Hibernate Search 5 之前,我们的系统将所有文档 ID 索引为数字字段:

@Entity
public class Staff {
@Id
@NumericField
protected Long id;
// other fields
}

这使我们能够使用数字范围查询。在 Hibernate 5 中,所有的文档 ID 都被索引为字符串,上面的注解导致了异常。如果没有注释,所有数字范围查询都无法正确搜索 ID 字段。

切换到 TermRangeQuery 而不是 NumericRangeQuery 会很乏味,我希望避免这种情况。

有没有办法继续将 ID 视为数值?

最佳答案

你是对的,你发现了一个我现在正在修复的错误 HSEARCH-1960 .

您可以通过为您的 Id 属性定义一个附加字段来解决这个问题,如下所示:

@Entity
public class Staff {
@Id
@Field(name="id_numeric")
@NumericField(forField="id_numeric")
protected Long id;
// other fields
}

然后在字段“id_numeric”而不是“id”上运行范围查询。

在 Hibernate Search 的 future 版本中,我们可能会将所有 ID 编码为 DocValue,因为这样效率更高。这意味着上述变通办法也是能够将其编码为 NumericField 的最佳方式。

关于java - 是否可以使用 Hibernate Search 5.X 对 @Id 字段使用数字编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932107/

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