模糊度超过 2 个字符的弹性搜索(距离)

Elastic search with fuzziness more than 2 characters (Distance)

我正在尝试匹配文本字段。如果它有 60% 加上匹配,我期待结果。

通过模糊我们可以给出只有 2 个距离。有了这个 Elastic Db 有描述为 'theeventsfooddrinks' 的记录,我正在尝试匹配 'theeventsfooddrinks123',但不匹配。

'theeventsfooddrinks12'=> 匹配

'theeventsfooddri'=> 不匹配

'321eventsfooddrinks'=> 不匹配

我要elastic来搭配'eventsfooddrinks'

任何需要 2 个以上步骤的更改都不匹配

我认为模糊查询不适合您的情况。模糊性是解决人类在键入查询时可能出现的小拼写错误问题的一种方法。人脑可以很容易地跳过单词中间某些字母的替换,而不会丢失短语的整体含义。我们期望搜索引擎的类似行为。

尝试使用 ngrams 分析器的常规部分加工:

    PUT my_index
    {
        "settings": {
            "analysis": {
                "filter": {
                    "trigrams_filter": {
                        "type": "ngram",
                        "min_gram": 3,
                        "max_gram": 3
                    }
                },
                "analyzer": {
                    "trigrams": {
                        "type": "custom",
                        "tokenizer": "standard",
                        "filter": [
                            "lowercase",
                            "trigrams_filter"
                        ]
                    }
                }
            }
        }, 
        "mappings": {
            "my_type": {
                "properties": {
                    "my_field": {
                        "type": "text",
                        "analyzer": "trigrams"
                    }
                }
            }
        }
    }

    GET my_index/my_type/_search
    {
        "query": {
            "match": {
                "my_field": {
                    "query": "eventsfooddrinks",
                    "minimum_should_match": "60%"
                }
            }
        }
    }