Пользовательские векторы терминов для выделения в Elasticsearch - PullRequest
0 голосов
/ 04 января 2019

Я хочу использовать функции выделения 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. Пока все хорошо.

Теперь мы рассматриваем выделение совпадений в исходном тексте, поэтому, если пользователь ищет слово «jump», мы хотим вернуть 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), где почти все будет аннотировано.

...