【发布时间】:2015-11-05 11:24:07
【问题描述】:
我正在尝试将 Hibernate Search 集成到应用程序中。应用程序实体可以具有以多语言存储的多个属性。这是通过将非多语言和多语言属性拆分为单独的实体来实现的。此拆分的示例 sn-p 如下所示(省略休眠注释,因为数据库部分工作正常):
@Indexed
public class Assignment {
@DocumentId
private UUID id;
@IndexedEmbedded
private Map<String, AssignmentI18n> i18n;
// Other properties
}
public class AssignmentI18n {
@DocumentId
@FieldBridge(impl = AssignmentI18nBridge.class)
private AssignmentI18nId id;
@Field
private String title;
@Field
private String description;
@Field
private String requirements;
public static class AssignmentI18nId {
private UUID assignmentId;
private String iso;
}
}
现在我想通过将这些数据视为索引中的单个实体来使用 Hibernate Search 来搜索这些数据。注释的设置方式会发生这种情况,但是多语言字段的所有条目都存储在索引的同一字段中。基本上我的索引结构是这样的:
id
i18n.title
i18n.description
i18n.requirements
由于多语言数据的所有值都在同一个字段中编入索引,我无法再区分它们属于哪种语言。有没有办法让索引看起来更像这样?:
id
i18n.nl.title
i18n.en.title
i18n.nl.description
i18n.en.description
i18n.nl.requirements
i18n.en.requirements
基本上我想将 HashMap 键值添加到索引字段名称中。我已经研究了将地图视为具有自定义 FieldBridge 的字段的可能性,但这似乎不是正确的方法。
【问题讨论】:
标签: java hibernate hibernate-search