Когда вы устанавливаете term_vector=with_positions_offsets
для определенного поля, это означает, что вы сохраняете термин «векторы на документ» для этого поля.
Когда речь заходит об подсветке, векторы векторов позволяют использовать ярко выраженный векторный маркер lucene, который быстрее, чем стандартный маркер. Причина в том, что стандартный маркер не имеет быстрого способа выделить, поскольку индекс не содержит достаточной информации (позиции и смещения). Он может только повторно анализировать содержимое поля, перехватывать смещения и позиции и делать подсветку на основе этой информации. Это может занять довольно много времени, особенно с длинными текстовыми полями.
Использование терминальных векторов у вас достаточно информации и не нужно пере анализировать текст. Недостатком является индекс, который заметно увеличится. Я должен добавить, что, поскольку векторы вектора Lucene 4.2 лучше сжимаются и сохраняются оптимизированным образом. И есть также новый PostingsHighlighter, основанный на способности хранить смещения в списке проводок, что требует еще меньше места.
elasticsearch автоматически использует лучший способ сделать выделение на основе имеющейся информации. Если сохраняются векторы вектора, он будет использовать быстрый векторный маркер, в противном случае стандартный. После переиндекса без векторов векторов выделение будет производиться с использованием стандартного маркера. Он будет медленнее, но индекс будет меньше.
Что касается полей ngram, описанное поведение является странным, поскольку быстрый векторный маркер должен иметь лучшую поддержку полей ngram, поэтому я ожидаю точно противоположный результат.
У любого решения нет ответа или ответа о влиянии with_positions_offsets? –