这是我的文档类:
@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;
...
}
Person
和OtherPerson
包含另外两个字符串,getteres,setters。
问题:在构建复合索引时如何覆盖内部字段的文本索引(默认为英语)?看起来设置language
仅适用于@TextIndexed
注释。
答案 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);