Spring Data MongoDB覆盖内部字段的复合索引中的文本索引语言

时间:2016-06-28 11:24:26

标签: java spring mongodb spring-data spring-data-mongodb

这是我的文档类:

@Document(language = "russian")

@CompoundIndexes({        
@CompoundIndex(def = "{'tempId' : 1, 'persons.title' : 'text', 'otherPersons.title' : 'text'}", background = true)})

public class CompanyHistory implements Persistable<String> {

@Id
private String id;

private String tempId;
private List<Person> persons;
private List<OtherPerson> otherPersons;
...
}

PersonOtherPerson包含另外两个字符串,getteres,setters。

问题:在构建复合索引时如何覆盖内部字段的文本索引(默认为英语)?看起来设置language仅适用于@TextIndexed注释。

1 个答案:

答案 0 :(得分:0)

有一个类似的问题(子实体的文本索引),并尝试通过language_override找到设置default_language@CompoundIndex的方法,但没有任何方法可以帮助我。

最后,我结束了以下解决方案:

TextIndexDefinition textIndex = new TextIndexDefinition.TextIndexDefinitionBuilder()
        .withDefaultLanguage("none").withLanguageOverride("dummy")
        .named("text_user_search")
        .onField("user.name")
        .onField("user.mail")
        .build();
mongoTemplate.indexOps(User.class).ensureIndex(textIndex);