我有这个域名对象
@Document(collection = "LabelsPredefined")
public class LabelsPredefined {
@TextIndexed
private String name;
public LabelsPredefined() {
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "[LabelsPredefined]";
}
}
我在前端输入了自动完成功能。因此,当用户输入第一个字符时,我将开始搜索这是我的Spring数据存储库方法:
@Query("{$text : { $search : ?0 } }")
Set<LabelsPredefined> findLabelsPredefinedBySearchString(final String searchString);
我的问题是,只有当整个搜索字符串与名称匹配而不是方法响应对象时。有没有可能的解决方案?
答案 0 :(得分:0)
我不知道这种语法:
@Query("{$text : { $search : ?0 } }")
也许您应该尝试传递TextCriteria而不是字符串:
TextCriteria criteria = TextCriteria.forDefaultLanguage()
.matchingAny(searchString);
将签名方法更改为:
Set<LabelsPredefined> findLabelsPredefinedBySearchString(TextCriteria criteria);