Эластичный поиск с нечеткостью более 2 символов (расстояние) - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь сопоставить текстовые поля.Я ожидаю результатов, если у него 60% плюс совпадение.

по Нечеткости, мы можем дать только 2 расстояния .С этим Elastic Db есть запись с описанием 'theeventsfooddrinks', и я пытаюсь соответствовать 'theeventsfooddrinks123', Это не соответствует.

'theeventsfooddrinks12' => соответствует

'theeventsfooddri' =>Не соответствует

'321eventsfooddrinks' => Не соответствует

Я хочу, чтобы эластик соответствовал этому 'eventsfooddrinks'

Любое изменение, требующее более 2 шаговне соответствует

1 Ответ

0 голосов
/ 06 декабря 2018

Я думаю, что нечеткие запросы не подходят для вашего случая.Нечеткость - это способ решить проблему с маленькими ошибками, которые человек может сделать, печатая свой запрос.Человеческий мозг может легко пропустить замену какой-либо буквы в середине слова, не теряя общего значения фразы.Подобное поведение мы ожидаем от поисковой системы.

Попробуйте использовать обычную частичную обработку с 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%"
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...