elasticsearch文档说明:
在实践中,该建议器将能够根据共现和频率更好地决定选择哪些令牌。
我有一个文档在我的索引,有一个名称字段的内容Bella Tank
。
要测试短语建议器,我发送以下查询:
curl -XPOST 'localhost:9200/my_index/_search?pretty' -d '{
"suggest" : {
"text" : "Bell Tank",
"suggestion": {
"phrase": {
"field": "name",
"size": 3
}
}
}
}'
我收到的三个建议是:
"suggest" : {
"suggestion" : [ {
"text" : "Bell Tank",
"offset" : 0,
"length" : 9,
"options" : [ {
"text" : "ball tank",
"score" : 0.03721739
}, {
"text" : "bella tank",
"score" : 0.03721739
}, {
"text" : "bess tank",
"score" : 0.034840018
} ]
} ]
}
可以看到,ball tank
和bella tank
的建议得分相同,尽管我的索引中只有bella tank
存在。它似乎根本不关心令牌的共现性。
我唯一的选择是在这里使用多字段创建name
的非分析版本,还是我这样做都错了?
您需要在您建议反对的字段上使用瓦片过滤器。多字段非常适合于此,因为您可能不想使用带状疱疹搜索。您最多可以使用3个max_shingle_size
。
这当然是一个bug,文档没有很明显地提到这一点。
看看维基百科是如何设置建议分析器的。