【发布时间】:2017-03-24 18:29:34
【问题描述】:
在 Hibernate Search 5.2 之前,不需要显式使用 @Facet 注释。在 5.2 中,必须使用 Lucene 的原生 faceting API。
我在无法注释的外部类上使用 Hibernate Search。有没有办法以编程方式定义这个“方面”?
对于映射配置,没有问题,因为 SearchMapping 提供了一个完整的编程替代 @Entity、@Indexed 和 @Field 注释。但是在这个 API 中,特别是在 EntityMapping 类中,没有办法定义一个字段将在一个方面查询中使用;除了使用 @Facet 注释字段之外,没有其他选择。
2018 年更新: 我已经更新到 Hibernate Search 5.6.4,它正在使用这种映射:
.property("businessProcess", ElementType.METHOD)
.field()
.analyze(Analyze.NO)
.store(Store.YES)
.facet()
.name("businessProcess")
.encoding(FacetEncodingType.STRING)
【问题讨论】:
-
这是一个错误。我创建了一张票来解决它:hibernate.atlassian.net/browse/HSEARCH-2650。感谢您报告此事!
-
我现在使用的是Hibernate Search 5.6.4,在程序化映射中调用了facet(),但是还是抛出了异常。有什么线索吗?谢谢。
-
您在查询之前是否对数据进行了索引?在 Hibernate Search 的旧版本(例如 5.6)中,已知此异常是由实际上没有构面索引的索引引起的:hibernate.atlassian.net/browse/HSEARCH-2955
-
在使用 .name("foo") 调用为构面添加显式名称后,它现在可以工作了。但是,我不能让它在自定义日历桥上工作。你介意在这里检查我的答案吗:stackoverflow.com/questions/39574478/…
标签: lucene annotations hibernate-search faceted-search