apache - example - cursorMark no tiene estado y cómo resuelve la localización profunda
solr tutorial (1)
Desde el enlace al que hiciste referencia ...
Los cursores en Solr son un concepto lógico, que no implica el almacenamiento en caché de ninguna información de estado en el servidor. En su lugar, los valores de clasificación del último documento devuelto al cliente se utilizan para calcular una "marca" que representa un punto lógico en el espacio ordenado de valores de clasificación. Esa "marca" se puede especificar en los parámetros de las solicitudes posteriores para decirle a Solr dónde continuar.
Esto se detalla más en una explicación de las restricciones sobre el uso de cursorMark ...
Los valores de la marca del cursor se calculan en base a los valores de clasificación de cada documento en el resultado , lo que significa que múltiples documentos con valores de ordenamiento idénticos producirán valores de marca de cursor idénticos si uno de ellos es el último documento en una página de resultados. En esa situación, la solicitud subsiguiente que usa ese cursorMark no sabría cuál de los documentos con los valores de marca idénticos debería omitirse. Exigir que el campo uniqueKey se use como una cláusula en los criterios de clasificación garantiza que se devolverá un orden determinista, y que cada valor de cursorMark identificará un punto único en la secuencia de documentos.
Si esto no ayuda a aclarar las cosas, la siguiente mejor explicación que puedo ofrecer es pensar en el cursorMark como un filtro codificado que le dice a Solr que salte todos los documentos con valores en los campos de clasificación que vienen "antes" (basado en el orden asc / desc) algunos valores específicos.
como se especifica aquí cursormark es sin estado, pero no entiendo cómo se soluciona el problema de la localización profunda si es sin estado. ¿Solr almacena los datos indexados en orden por campo clave único? Si es así, aclarará mi confusión.
si me equivoco, explique cómo la marca del cursor resuelve la localización profunda. Como el cursormark es sin estado, también necesita ordenar y clacular el cursormark cada vez que solicite una consulta, y esto es similar a start = # start-position.