Пользовательские термины-векторы в ElasticSearch

Как (если это вообще возможно) можно вставить любой термин-вектор в индекс ElasticSearch?

ES вычисляет векторы терминов за кулисами для выполнения своих задач по анализу текста, но было бы полезно иметь возможность ввести любой список пар (термин, вес) вместо этого.

Зачем?

Ну, например, хотя ES включает kNN (k-ближайших соседей) для k=2, в контексте географической близости он не имеет явной функциональности k>2. Если бы мы могли вставить наши собственные термины-векторы, мы могли бы взломать a k>2 функциональности, используя встроенные в ES методы индексации текста.

Есть какие-либо признаки по этому вопросу?

1 ответ

Насколько я знаю, с помощью asticsearch нет способа сделать это (я все еще ищу самый быстрый подход к поиску в KNN в реальном времени, мой выбор - это мой выбор).

Elasticsearch основан на инвертированном индексе, поэтому каждый термин в векторе терминов (который может происходить из предложения) будет проиндексирован в отсортированном списке. Когда мы ищем запрос, запрос будет проанализирован в виде вектора терминов, а asticsearch (фактически, lucene) будет искать индексы для каждого термина.

Но KNN требует вычисления расстояния между двумя векторами, даже если они не разделяют один и тот же термин, традиционный инвертированный индекс не предназначен для этого требования.

Как вы уже сказали,asticsearch может реализовать поиск KNN в реальном времени, когда k = 2 по гео-запросу, но я не думаю, что он может поддерживать k > 2.

Кстати, если вы нашли какой-либо подход, который может помочь реализовать поиск в KNN в реальном времени, то K может быть очень большим числом ( 100000?) И большим набором данных (количество векторов), скажите, пожалуйста, спасибо:)

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