Как получить информацию о векторе терминов для всего индекса в эластичном поиске?, а не на уровне документа

Согласно документации эластичного поиска, https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html, векторы терминов можно применять только к документам. Есть ли способ применить его на уровне индекса.

Мой вариант использования - вычислить частоту всех uni, bi и триграмм в поле (тип: строка, в основном предложение), присутствующем во всех документах, добавленных в индекс, после применения фильтра английских стоп-слов.

Спасибо.


person Dinesh Babu Rengasamy    schedule 03.02.2017    source источник


Ответы (1)


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

  • общая частота терминов (как часто термин встречается во всех документах)
  • частота документа (количество документов, содержащих текущий термин)

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

Затем при получении векторов терминов просто добавьте параметр «term_statistics», и ttf будет включен в вывод. См. этот пример:

GET /twitter/_doc/1/_termvectors { "поля" : ["текст"], "смещения" : истина, "полезные нагрузки" : истина, "позиции" : истина, "term_statistics" : истина, "field_statistics": правда }

Однако имейте в виду, что term_vectors и запрос «более похоже на это», который опирается на term_vectors, не точен, если индекс использует несколько осколков. Скажите, что это не так!

Статистические данные о терминах и полях не точны. Удаленные документы не учитываются. Информация извлекается только для сегмента, в котором находится запрошенный документ. Таким образом, статистика терминов и полей полезна только в качестве относительных показателей, тогда как абсолютные числа не имеют значения в этом контексте.

Если вам нужна точная статистика, вы должны настроить свой индекс как единый сегмент, что противоречит цели использования эластичного поиска, поскольку вы не можете кластеризовать один сегмент. Еще один отправитель Stackoverflow попал в эту ловушку. Если кто знает решение пишите.

person TomDurden    schedule 10.12.2018