【发布时间】:2021-08-14 13:29:15
【问题描述】:
我正在尝试在您键入时添加模糊性来编写搜索查询。(弹性搜索 7.12)
{
"query": {
"multi_match": {
"query": "airl recl",
"fields": [
"tags",
"display_text",
"display_subtext"
],
"type" : "most_fields",
"operator": "and",
"fuzziness": "AUTO:4,6",
"prefix_length" :2
}
}
}
我插入了带有“airtel 充值”值的文档。我还对上述给定的 3 个字段以及空间分析器使用 edge n gram(1:50)。
- 如果我使用 airl 搜索 -> 效果很好,使用 airtel 关键字获取结果。
- 如果我用 recl 搜索 -> 它工作正常,得到 结果与充值关键字。
- 但是当我在查询中使用“airl recl”进行搜索时,没有得到任何结果。
空间分析器:
"words_with_spaces_analyzer" : {
"filter" : [
"lowercase",
"asciifolding"
],
"type" : "custom",
"tokenizer" : "words_with_space"
}
},
"tokenizer" : {
"words_with_space" : {
"pattern" : "([a-zA-Z0-9.-]+[\\s]*)",
"type" : "pattern",
"group" : "0"
}
}
},
映射
"display_text": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
},
"analyzer": "edge_nGram_analyzer",
"search_analyzer": "words_with_spaces_analyzer"
}
有人可以帮助我理解为什么上面给定的查询对于多令牌输入会以这种方式表现,而如果单独运行它们,两个令牌都会给出输出?
【问题讨论】:
标签: elasticsearch elasticsearch-dsl