我正在使用ElasticserachRepoistory,以下查询不适用于未分析的字符串: findByNameStartingWithIgnoreCase(字符串名称);
如果我对字段进行分析,则它适用于字符串中的每个单词,而不是短语的开头。
在非分析领域中最简单的方法是什么?我需要它来自动完成
答案 0 :(得分:1)
我已经完成了自定义分析器,它的工作原理是:
@Document(indexName = "db", type = "user")
@Getter
@Setter
@Setting(settingPath = "/settings.json")
public class User{
@org.springframework.data.annotation.Id
private Long id;
@Field(analyzer= "autocomplete",type = FieldType.String )
private String name;
}
json文件:
{
"index": {
"number_of_shards": 1,
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}
}
}
}