Как написать Elasticsearch Analyzer для адреса?

Я пытаюсь написать анализатор для индексации адресного поля. Поле и запрос могут содержать несколько комбинаций города, страны, названий улиц / номеров, почтовых индексов. Буквенный регистр и порядок слов следует игнорировать. Мне также нужно работать с разными языками. Если у меня есть запись, которая содержит "los angeles" - в настоящее время я получаю ее обратно с запросом "los" или "angeles". но не "Лос-Анджелес". Я не могу использовать ключевое слово tokenized, потому что это будет искать только совпадения по полному термину... Так как мне это сделать? РЕДАКТИРОВАТЬ - это для поиска PREFIX. EDIT2 - когда я использую стандартный токенизатор - поиск работает для "los", "los angeles", "angeles", "angeles los" - но не для "lo", например... Мне также нужен поиск по префиксу. Если я использую "match_phrase_prefix" вместо "prefix" запроса - я получаю "los ange" для работы. Но тогда нужно сохранить порядок слов... и добавление чисел не находит совпадений. Например, если поле содержит "los angeles 32" - "los 32" не возвращает его...

Благодарю.

analysis: {
  analyzer: {
    phone_analyzer: {
      type: "custom",
      tokenizer: "keyword",
      filter: [
        "word_delimiter_for_phone"
      ]
    }
    address_analyzer: {
      type: "custom",
      tokenizer: "standard",
      filter: ["trim", "lowercase",'asciifolding']
    }
  },
  filter: {
    word_delimiter_for_phone: {
      type: "word_delimiter",
      catenate_numbers: true,
      preserve_original: true 
    }
  }

0 ответов

Другие вопросы по тегам