Ускорение поиска эластичности more_like_this query - PullRequest
1 голос
/ 26 октября 2019

Я был заинтересован в получении аналогичных документов для данного входного документа (аналогично KNN). Поскольку векторизация документов (с использованием doc2vec), которые не похожи по размерам, приведет к несовместимым векторам документов, а затем вычислит вектор для ввода пользователя (который может быть всего лишь несколькими терминами / предложениями по сравнению с документами, на которых была обучена модель doc2vec, гдекаждый документ будет состоять из 100 или 1000 слов) попытка найти k-ближайших соседей приведет к неправильным результатам из-за отсутствия функций.

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

Но меня беспокоит производительность, когда у меня есть миллионы документов, проиндексированных вelasticsearch. В документации говорится, что использование term_vector для сохранения векторов терминов во время индекса может ускорить анализ. Но я не понимаю, к какому типу вектора терминов относится документация в этом контексте. Поскольку существует три различных типа векторов терминов: информация о терминах, статистика терминов и статистика полей. И статистика терминов и статистика полей вычисляют частоту терминов по отношению к другим документам в индексе, не будут ли эти векторы устаревшими, когда я добавлю новые документы в индекс. Поэтому я предполагаю, что документация more_like_this относится к информации о терминах (которая представляет собой информацию о терминах в одном конкретном документе, независимо от других).

Может кто-нибудь сообщить мне, если вычислять только информационный вектор термина наВремя индекса достаточно, чтобы ускорить more_like_this?

1 Ответ

1 голос
/ 26 октября 2019

Не следует беспокоиться об устаревании векторов терминов , поскольку они хранятся для каждого документа, поэтому они будут обновляться соответственно.

Для более похожих это будетдостаточно просто иметь term_vectors:yes, вам не нужно иметь смещения и позиции. Так что, если вы не планируете использовать подсветку, вам подойдет только одно по умолчанию.

Итак, для вашего текстового поля вам нужно иметь такие сопоставления, и этого будет достаточно для ускорения MLT. исполнение:

{
  "mappings": {
    "properties": {
      "text": {
        "type":        "text",
        "term_vector": "yes"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...