Запрос автоматического поиска Elasticsearch

Мне нужна помощь с приведенной ниже постановкой проблемы

Проблема заключается в реализации функции автоматического поиска с указанным ниже требованием.

Input -> BTech
Output ->
 BTech in cse
 b.tech in computer science
 b tech in computer

Input -> B.Tech
Output ->
 BTech in cse
 b.tech in computer science
 b tech in computer

Input -> Tec
Output ->
 Technological Advance 
 Artificial Technology
 BTech in cse
 b.tech in computer science
 b tech in computer

Но при использовании text=b.tech мои результаты также сопоставляются с «b.e.» жетоны, и это идет сверху. Результаты должны иметь btech, чтобы быть на вершине. (Я использовал Ngrams, word_delimiter и т. д.)

Я намеренно не показываю здесь свой запрос, потому что он слишком сложный, что создаст путаницу. Буду признателен, если кто-то напишет с нуля на свежую голову.

Может ли кто-нибудь помочь мне с желаемым запросом? :|


person pankaj    schedule 19.05.2019    source источник
comment
Этого можно добиться, создав собственный анализатор синонимов. Этот ответ может помочь вам начать работу.   -  person Nishant    schedule 20.05.2019
comment
Спасибо Нишант за ответ! На самом деле здесь данные динамические, т.е. почему я не могу определить синонимы в файле. Что я ищу, чтобы игнорировать специальные символы, такие как . как в тексте запроса, так и в индексированных данных.   -  person pankaj    schedule 20.05.2019
comment
Но, согласно ожидаемому результату, дело не только в игнорировании .. А как насчет b tech? Это не может соответствовать BTech, если вы не используете синонимы.   -  person Nishant    schedule 20.05.2019
comment
Да. Верно. Но мы также можем игнорировать пробелы, так как . . Все небуквенно-цифровые символы следует игнорировать.   -  person pankaj    schedule 20.05.2019
comment
Тогда строка типа BTech in cse превратится в BTechincse или btechincse, что неприемлемо. В этом случае n-gram может работать, но n-gram приведет к созданию множества терминов, которые повлияют на дисковое пространство.   -  person Nishant    schedule 20.05.2019
comment
Дисковое пространство меня устраивает. На самом деле я тоже пробовал Ngram, но не смог совместить игнорирование буквенно-цифровых символов и Ngram в одной конфигурации. После применения Ngram B.Tech сопоставляется с BE и Btech в cse, но BE выходит на первое место в результатах вместо Btech в cse.   -  person pankaj    schedule 20.05.2019
comment
Давайте продолжим обсуждение в чате.   -  person pankaj    schedule 20.05.2019