Поиск в тексте с использованием ngram для минимальных символов в шаблоне поиска и выше

У меня есть индекс текста в моем эластичном сервере. Я реализовал токенайзер Ngram, как это:

"analysis": {
      "analyzer": {
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "ngram_tokenizer"
        }
      },
      "tokenizer": {
        "ngram_tokenizer": {
          "type": "ngram",
          "min_gram": "3",
          "max_gram": "7"
        }
      }
    },

Допустим, мои данные

"Привет, прекрасный мир, ell"

Когда я помещаю запрос на совпадение "Ад", я хочу, чтобы он нашел мне только первое слово (Hello), а не слово ell, поэтому я не хочу, чтобы он "ломал" мой шаблон поиска, просто чтобы найти его в моих данных как есть (с 4-мя характерами и не ниже)

Спасибо

1 ответ

Решение

Решением будет замена токенизатора в вашем анализаторе.

Например, вы можете сделать это как

"some_analyzer": {
    "type": "custom",
    "tokenizer": "whitespace",
    "filter": [ "lowercase" ]
  }

Важно то, что в вашем поисковом анализаторе нет токенайзера nGram.

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