3

我的文档有一个“描述”字段,包含 3 到 10 个句子。

我必须支持模糊性,因为我不能指望用户说出完全相同的话。

另一方面,我必须使用“match_phrase”而不是“match”,因为如果单词彼此相距太远,则文档不相关。

问题是“match_phrase”不分析单词,因此不支持模糊性。(请参阅此处的最后一段https://www.elastic.co/guide/en/elasticsearch/guide/master/phrase-matching.html)。

我想我需要一个创造性的解决方案来以某种方式实现这两个要求。也许通过使用其他搜索查询。

4

1 回答 1

1

在对“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
    }
},
于 2016-11-29T15:00:59.723 回答