我有一个存储了一些名称的索引。
PUT localhost:9200/myIndex
{
"mappings": {
"record" : {
"properties" : {
"namesuggest" : {
"type" : "completion"
}
}
}
}
}
所以我输入了一些记录:
PUT localhost:9200/myindex/record/1
{
"namesuggest" : "Homer Simpson"
}
PUT localhost:9200/myindex/record/2
{
"namesuggest" : "Bart Simpson"
}
PUT localhost:9200/myindex/record/3
{
"namesuggest" : "Marge Simpson"
}
通过此查询,我得到了建议:
POST localhost:9200/myindex/_search
{
"suggest": {
"name-suggest" : {
"prefix" : "bart",
"completion" : {
"field" : "namesuggest"
}
}
}
}
如果我设置prefix == bart
我已经回复了建议“Bart Simpson”并且这是正确的。
我不明白为什么,如果我设置prefix == Simpson
我已经返回空白结果。
我的结果集与%Simpson%
匹配,类似于运算符:
Marge Simpson
我该如何进行查询?
答案 0 :(得分:1)
完成建议适用于FST,并且它的实现针对前缀进行了优化。
而且因为弦乐" Bart Simpson"并不是以" Simpson"它不会匹配。
但是,您可以使用分析器来反向存储令牌。即 " Bart Simpson" => [辛普森,巴特]。然后,当您搜索Simpson时,它确实匹配前缀。
参考文献:https://www.elastic.co/assets/bltced6bd71d5fa33ab/suggest_1.png?uid=bltced6bd71d5fa33ab