【问题标题】:ElasticSearch: alternative of using match_phrase to support fuzzinessElasticSearch:替代使用 match_phrase 来支持模糊性
【发布时间】:2016-11-28 22:00:50
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: elasticsearch fuzzy-search match-phrase


    【解决方案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
        }
    },
    

    【讨论】:

    • 不错!您是否设法使查询的某些单词成为可选?即查询中缺少一/两个单词,但仍被视为匹配。我尝试使用slop,但我仍然不确定它如何影响结果。
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2023-03-20
    • 2023-04-06
    • 2019-07-18
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多