通过Instant范围构成休眠搜索结果失败

时间:2017-11-10 13:48:08

标签: java hibernate lucene hibernate-search

我有一个索引创建时间戳为java.time.Instant类型的实体,我想按创建时间戳范围对搜索结果进行分析。
该实体看起来如下:

@Entity
@Indexed
public class Document {

    @Id
    @DocumentId
    private Long id;

    @Field
    private String name;

    @Field(analyze = Analyze.NO)
    @Facet
    private Instant creationTimestamp;
}

当我启动我的应用程序时,我收到以下错误:

org.hibernate.search.exception.SearchException: HSEARCH000264: @Facet is not supported for type 'java.time.Instant'. See org.hibernate.search.bugs.Document#creationTimestamp

我在hibernate documentation中没有找到任何与即时值相关的方面。

是否可以通过创建时间戳范围来构建休眠搜索结果?

我在这里创建了一个失败的测试用例:github repo link

1 个答案:

答案 0 :(得分:1)

我担心Hibernate Search faceing子系统尚不支持Java 8日期/时间类型。我创建了一张解决这个问题的机票,但我不知道什么时候会(有内部并发症):https://hibernate.atlassian.net/browse/HSEARCH-2954

与此同时,您可以使用代表时间戳的/account/{username}长字段来解决这种缺乏支持的问题:

@Transient

然后使用长时间戳查询。

远远不是一个理想的解决方案,但它是我能想到的唯一一个。