首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate-Search @ index嵌入HashMap,如何在索引中包含键集

Hibernate-Search @ index嵌入HashMap,如何在索引中包含键集
EN

Stack Overflow用户
提问于 2015-11-05 19:24:07
回答 1查看 664关注 0票数 3

我正在尝试将Hibernate搜索集成到一个应用程序中。应用程序实体可以有多个多语言存储的属性。这是通过将非多语言和多语言属性拆分成独立的实体来实现的。此拆分的示例片段如下所示(省略了hibernate注释,因为数据库部分工作正常):

代码语言:javascript
复制
@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搜索来使其可搜索。然而,在设置注释的方式中,多语言字段的所有条目都存储在索引中的同一字段中。基本上,我的索引结构如下所示:

代码语言:javascript
复制
id
i18n.title
i18n.description
i18n.requirements

由于多语言数据的所有值都在同一个字段中进行索引,因此我无法再区分它们属于哪种语言。有没有办法让索引看起来更像这样?:

代码语言:javascript
复制
id
i18n.nl.title
i18n.en.title
i18n.nl.description
i18n.en.description
i18n.nl.requirements
i18n.en.requirements

基本上,我想将HashMap键值添加到索引字段名中。我已经研究了将映射视为具有自定义FieldBridge的字段的可能性,但这似乎不是正确的方法。

EN

回答 1

Stack Overflow用户

发布于 2015-11-06 04:36:23

如果您想使索引字段看起来像您所描述的字段,请使用自定义字段桥。这就是获得这种结构的方法,但是由于您的映射值相当复杂,因此需要相当多的自定义代码来创建所有字段。

您可以为Hibernate Search here创建一个功能请求。我可以想象,这种类型的功能将是通用的。基本上,这是一种通过@IndexedEmbedded选项或通过附加注释定义map键如何成为Lucene字段名的一部分的方法。也就是说,你有没有想过如何准确地在这个索引中搜索?用户是否以某种方式指定了区域设置,并且根据此区域,您将针对适当的字段?另外,如何处理根据语言类型配置不同词干分析器的方法?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33543326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档