基本上我目前正在为模糊搜索创建模糊搜索 我有两种搜索要比较
一种是自动模糊搜索
{
"query": {
"match": {
"user": {
"query": "test",
"fuzziness": "AUTO"
}
}
}
}
Others是与多个错别字匹配的字词查询
{
"query" : {
"terms" : {
"user" : ["test", "testt", "tesr", "tst", ...]
}
}
}
假设其中大约有20s或更多个术语,我想知道的是,哪个更可能是一种更好的做法,并且在性能上更好,以及与许多关键字匹配的术语的可扩展性。
答案 0 :(得分:0)
匹配查询:
条款查询:
答案 1 :(得分:0)
让我们从 Performance:
开始来自fuzzy docs:
要查找相似的术语,模糊查询会在指定的编辑距离内创建搜索词的所有可能变化或扩展的集合。然后查询将为每个扩展返回完全匹配。
这两个查询的意思将是相似的执行,也就是说,假设您确实确实希望完全匹配,则术语查询不会分析使之成为“更高效”的短语。
更好的做法:
如果没有有关您的产品,数据和用例的更多详细信息,这很难回答。
话虽如此,我觉得术语查询是更好的解决方案,您真的希望part
与park
匹配吗?或resort
与report
匹配?模糊性很难盲目使用,如果您最终选择了此路径,我建议您在某些地方添加一些额外的逻辑来处理这些结果。