Как настроить параметры анализатора, чтобы edge_ngram мог искать числа? - PullRequest
0 голосов
/ 30 апреля 2019

Я не могу искать номера при вводе запроса в упругом поиске в поле адреса, когда я ввожу число, например «11412», оно не показывает результата, даже если адрес с таким почтовым индексом существует.

Я попытался поиграть с настройкой anaylzer, изменив token_chars, включая цифры, которые не помогли. ниже приведены настройки моего анализатора, включая сопоставления

{
  "settings": {
    "analysis": {
      "analyzer": {
        "autocomplete": {
          "tokenizer": "autocomplete",
          "filter": [
            "lowercase"
          ]
        },
        "autocomplete_search": {
          "tokenizer": "lowercase"
        }
      },
      "tokenizer": {
        "autocomplete": {
          "type": "edge_ngram",
          "min_gram": 3,
          "max_gram": 20,
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "address": {
        "type": "text",
        "analyzer": "autocomplete",
        "search_analyzer": "autocomplete_search"
      }
    }
  }
}

при использовании чисел в запросе ниже в упругом поиске я не получаю результатов, хотя обычный поиск по словам и слова с частичным соответствием работают, пытаясь иметь такое же поведение с числами "11412", "1141"

{
  "query": {
    "match": {
      "address": {
        "query": "11412", 
        "operator": "and"
      }
    }
  }
}

1 Ответ

1 голос
/ 30 апреля 2019

Проблема, с которой вы столкнулись, заключается в том, что вы используете токенизатор lowercase, который разбивает токены, когда встречает символ, который не является буквой, поэтому ни одна из цифр не попадает в инвертированный индекс.

Измените свой autocomplete_search анализатор на это, и он будет работать:

    "autocomplete_search": {
      "tokenizer": "standard"
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...