我刚刚开始探索Elasticsearch。我创建了一个文档如下:
curl -XPUT "http://localhost:9200/cities/city/1" -d'
{
"name": "Saint Louis"
}'
我现在尝试在名字字段上进行模糊搜索,Levenshtein距离为5,如下所示:
curl -XGET "http://localhost:9200/_search " -d'
{
"query": {
"fuzzy": {
"name" : {
"value" : "St. Louis",
"fuzziness" : 5
}
}
}
}'
但它没有返回任何比赛。我希望圣路易斯的记录可以归还。我该如何修复我的查询?
感谢。
答案 0 :(得分:3)
您的查询存在的问题是,只允许最大编辑距离为2。
在上面的情况中,您可能想要做的是为St. to Saint设置一个synonym,这对您来说很匹配。当然,这将取决于您的数据,因为St也可能是“街道”。
如果您只想测试模糊搜索,可以试试这个例子
curl -XGET "http://localhost:9200/_search " -d'
{
"query": {
"fuzzy": {
"name" : {
"value" : "Louiee",
"fuzziness" : 2
}
}
}
}