我的文档有一个'description'字段,包含3到10个句子。
我必须支持模糊,因为我不能指望用户使用完全相同的单词。
另一方面,我必须使用“match_phrase”而不是“匹配”,因为如果这些单词彼此相距太远,则该文档不相关。
问题是“match_phrase”不会分析单词,因此它不支持模糊性。 (见https://www.elastic.co/guide/en/elasticsearch/guide/master/phrase-matching.html的最后一段)。
我想我需要一个创造性的解决方案,以某种方式实现这两个要求。也许通过使用其他搜索查询。
答案 0 :(得分:0)
在对'span'查询进行一些挖掘之后,事实证明通过将'span_near'与'span_multi'一起使用可以实现上述两个请求。
以下是在“说明”字段中搜索“hello world”的示例。
{
"span_near": {
"clauses": [{
"span_multi": {
"match": {
"fuzzy": {
"description": {
"value": "hello"
}
}
}
}
}, {
"span_multi": {
"match": {
"fuzzy": {
"description": {
"value": "world"
}
}
}
}
}],
"slop": 2,
"in_order": false,
"collect_payloads": false
}
},