Поиск в тексте с использованием 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.