Пользовательские векторы терминов для выделения в Elasticsearch
Я хочу использовать функции выделения Elasticsearch в результатах поиска, но не могу использовать плагин анализатора. Наш (очень нестандартный) конвейер NLP довольно тяжелый (в процессоре и памяти, а в производстве он может взаимодействовать с другими службами, например, для разрешения словаря)
В настоящее время мы превращаем простой текстовый документ в список токенов, поэтому The quick siberian fox jumps over the grizzly bear
становится {"text": "The quick siberian fox jumps over the grizzly bear", "tokens": ["quick", "siberian fox", "jump", "grizzly bear"]}
, Затем мы просто вставляем вышеупомянутое как документ, который содержит 2 поля, text
а также tokens
и мы делаем большую часть нашего поиска как точные совпадения на tokens
поле. Все идет нормально.
Теперь мы рассматриваем выделение совпадений в исходном тексте, поэтому, если пользователь ищет слово "прыжок", мы хотим вернуть The quick siberian fox [jumps] over the grizzly bear
, Однако, насколько я могу судить, механизм выделения Elasticsearch зависит от анализа простого текста либо во время индексации, либо во время запроса, чтобы получить векторы терминов, которые содержат информацию о положении. (Это правильно?)
Поскольку мы не можем написать плагин-анализатор для ES, мы не можем полагаться на этот метод. Тем не менее, мы производим информацию о положении при запуске конвейера NLP для простой текстовой строки, поэтому можем ли мы предоставить векторы терминов во время индексации? Я обнаружил определяемые пользователем термины-векторы в ElasticSearch, но единственный ответ фокусируется на приложении (KNN), а не на проблеме вставки векторов терминов вручную.
В качестве альтернативы, есть ли другой способ подсветки, который мы можем использовать? Я нашел https://www.elastic.co/blog/search-for-things-not-strings-with-the-annotated-text-plugin но я не уверен, как бы он себя вел, если бы мы просто проиндексировали материал лайк the [quick](quick) [siberian fox](siberian fox) [jumps](jump) over the [grizzly bear](grizzly bear)
где почти все будет аннотировано.