Hibernate Search - 如何动态地将可排序字段添加到索引?
Hibernate Search - how to dynamically add a sortable field to the index?
我知道@SortableField 注释以及 MetadataProvidingFieldBridge.configureFieldMetadata 方法,它们提供了将字段指定为在 HS 5 中可排序的方法。
但是这些仅在创建索引时适用。在我的应用程序中,结果可以用任意标签标记,这些标签具有关联的分数,我需要能够对其中任何一个进行排序。所以字段名就是标签名,值就是标签的分数。
以前,当任何字段都可以用于排序时,这与 HS3 一起使用,但在 v5 中,我们必须提前告诉 HS 有关可排序字段的信息。
所以问题是:是否可以在用户创建新标签时动态添加可排序字段,如果可以,怎么做?
如 here 所述,您唯一的解决方案是将配置 属性 hibernate.search.index_uninverting_allowed
设置为 true
。它不是很有效,因此你会收到警告,但它在 HS3 中也不是很有效(它工作相同)。
标有 @SortableField
的字段仍将获得性能提升并且不会触发警告。
我们计划在 Hibernate Search 6 中添加一种更好、更有效的动态字段排序方式。
我知道@SortableField 注释以及 MetadataProvidingFieldBridge.configureFieldMetadata 方法,它们提供了将字段指定为在 HS 5 中可排序的方法。
但是这些仅在创建索引时适用。在我的应用程序中,结果可以用任意标签标记,这些标签具有关联的分数,我需要能够对其中任何一个进行排序。所以字段名就是标签名,值就是标签的分数。
以前,当任何字段都可以用于排序时,这与 HS3 一起使用,但在 v5 中,我们必须提前告诉 HS 有关可排序字段的信息。
所以问题是:是否可以在用户创建新标签时动态添加可排序字段,如果可以,怎么做?
如 here 所述,您唯一的解决方案是将配置 属性 hibernate.search.index_uninverting_allowed
设置为 true
。它不是很有效,因此你会收到警告,但它在 HS3 中也不是很有效(它工作相同)。
标有 @SortableField
的字段仍将获得性能提升并且不会触发警告。
我们计划在 Hibernate Search 6 中添加一种更好、更有效的动态字段排序方式。