使用日期 属性 的 Hibernate 搜索 MultiFieldQueryParser
Hibernate Search MultiFieldQueryParser with a Date property
我从 Hibernate Search 4.4 升级到 5.3 并成功迁移了 Hibernate Search Migration Guides 中的所有问题,但是我在使用 MultiFieldQueryParser
时遇到了关于日期 属性 的以下错误。
org.hibernate.search.exception.SearchException: HSEARCH000233: The specified query '+(dateField:value)' contains a string based sub query which targets the numeric encoded field(s) 'myDate'. Check your query or try limiting the targeted entities.
我的约会对象属性很标准
@Column(name = "my_date")
@Temporal(TemporalType.TIMESTAMP)
@Field
@DateBridge(resolution = org.hibernate.search.annotations.Resolution.DAY)
private Date myDate;
版本
- 休眠 4.3
- 休眠搜索 5.3
- 必须为
org.apache.lucene.queryparser.classic.MultiFieldQueryParser
显式导入 (maven) org.apache.lucene.lucene-queryparser
(4.10.4),否则找不到它
还发现了这个关于日期值的问题 (HSEARCH-1870),不确定是否相关。
我在 myDate
声明中遗漏了什么吗?
编辑:错过了一项迁移要求 - 请参阅下面的回答。
事实证明我错过了一个迁移要求:默认情况下,编码在 HS 5 中设置为数字。
设置 encoding
以模仿以前版本中的行为修复了它。
@Column(name = "my_date")
@Temporal(TemporalType.TIMESTAMP)
@Field
@DateBridge(resolution = org.hibernate.search.annotations.Resolution.DAY, encoding = EncodingType.STRING)
private Date myDate;
我从 Hibernate Search 4.4 升级到 5.3 并成功迁移了 Hibernate Search Migration Guides 中的所有问题,但是我在使用 MultiFieldQueryParser
时遇到了关于日期 属性 的以下错误。
org.hibernate.search.exception.SearchException: HSEARCH000233: The specified query '+(dateField:value)' contains a string based sub query which targets the numeric encoded field(s) 'myDate'. Check your query or try limiting the targeted entities.
我的约会对象属性很标准
@Column(name = "my_date")
@Temporal(TemporalType.TIMESTAMP)
@Field
@DateBridge(resolution = org.hibernate.search.annotations.Resolution.DAY)
private Date myDate;
版本
- 休眠 4.3
- 休眠搜索 5.3
- 必须为
org.apache.lucene.queryparser.classic.MultiFieldQueryParser
显式导入 (maven)org.apache.lucene.lucene-queryparser
(4.10.4),否则找不到它
还发现了这个关于日期值的问题 (HSEARCH-1870),不确定是否相关。
我在 myDate
声明中遗漏了什么吗?
编辑:错过了一项迁移要求 - 请参阅下面的回答。
事实证明我错过了一个迁移要求:默认情况下,编码在 HS 5 中设置为数字。
设置 encoding
以模仿以前版本中的行为修复了它。
@Column(name = "my_date")
@Temporal(TemporalType.TIMESTAMP)
@Field
@DateBridge(resolution = org.hibernate.search.annotations.Resolution.DAY, encoding = EncodingType.STRING)
private Date myDate;