Cuando establece term_vector=with_positions_offsets
para un campo específico, significa que está almacenando el término vectores por documento, para ese campo.
Cuando se trata de resaltar, los vectores de términos le permiten usar el resaltador de vector rápido lucene, que es más rápido que el resaltador estándar. La razón es que el marcador estándar no tiene ninguna manera rápida de resaltar, ya que el índice no contiene suficiente información (posiciones y desplazamientos). Solo puede volver a analizar el contenido del campo, interceptar desplazamientos y posiciones y realizar resaltados según esa información. Esto puede llevar bastante tiempo, especialmente con campos de texto largos.
Al utilizar vectores de términos, tiene suficiente información y no necesita volver a analizar el texto. La desventaja es el tamaño del índice, que aumentará notablemente. Debo agregar que, dado que los vectores de términos de Lucene 4.2 están mejor comprimidos y almacenados de una manera optimizada. Y también está el nuevo PostingsHighlighter basado en la capacidad de almacenar compensaciones en la lista de publicaciones, que requiere incluso menos espacio.
elasticsearch utiliza automáticamente la mejor manera de resaltar según la información disponible. Si se almacenan vectores de términos, utilizará el marcador de vector rápido, de lo contrario, el estándar. Después de reindexar sin vectores de términos, el resaltado se realizará con el resaltador estándar. Será más lento, pero el índice será más pequeño.
En cuanto a los campos de ngram, el comportamiento descrito es extraño, ya que el marcador vectorial rápido debería tener un mejor soporte para los campos ngram, por lo que esperaría exactamente el resultado opuesto.
nadie tiene alguna solución o respuesta sobre el impacto de with_positions_offsets? –