Как получить векторную информацию о термине для всего индекса в упругом поиске, а не на уровне документа
Согласно гибкой поисковой документации, https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html, векторы терминов могут применяться только к документам. Есть ли способ, которым я могу применить его на уровне индекса.
Мой вариант использования - вычислить частоту всех уни, би и триграмм в поле (тип: строка, в основном предложение), присутствующем во всех документах, добавляемых в индекс, после применения фильтра стоп-слов на английском языке.
Благодарю.
0 ответов
Несколько статистических данных хранятся с использованием векторов терминов для всех документов в сегменте (почему не индексировать?... продолжайте читать).
- общая частота терминов (как часто термин встречается во всех документах)
- периодичность документов (количество документов, содержащих текущий термин)
Чтобы заставить это работать, вы должны включить term_vectors для поля, которое вы хотите проанализировать. Лучше всего это сделать, добавив term_vectors к определению поля при настройке отображения, поскольку вычисления выполняются во время индекса и это ускоряет извлечение вектора терминов.
Затем при получении векторов терминов просто добавьте параметр "term_statistics", и ttf будет включен в вывод. Смотрите этот пример:
GET / twitter / _doc / 1 / _termvectors {"fields": ["text"], "offsets": true, "payloads": true, "позиции": true, "term_statistics": true, "field_statistics": true}
Однако следует помнить, что term_vectors и запрос "more like this", основанный на term_vectors, не точны, если в индексе используется несколько сегментов. Скажи, что это не так!
Термин и полевая статистика не точны. Удаленные документы не учитываются. Информация извлекается только для фрагмента, в котором находится запрашиваемый документ. Поэтому статистика термина и поля полезна только как относительные показатели, тогда как абсолютные числа не имеют значения в этом контексте.
Если вы хотите получить точную статистику, вы должны настроить свой индекс как отдельный сегмент, что лишает цели использования упругого поиска, поскольку вы не можете кластеризовать один фрагмент. Еще один отправитель Stackru попал в эту ловушку. Если кто-нибудь знает о решении, пожалуйста, напишите.