solr pagination cursor

Marcador de cursor Solr y paginación



pagination (1)

El cursorMark le dice a Solr dónde debería comenzar la próxima respuesta. Es análogo al parámetro de start en su primer ejemplo. A medida que pagine los resultados, cursorMark cada respuesta muestra dónde comienza la página siguiente.

Si solo está buscando "cuál es el primer resultado en la página 1001", la primera versión funcionará perfectamente. Si está revisando los resultados - si un usuario puede o no puede ir a la página siguiente, el punto sobre el uso de cursorMarks es que cada nodo (o en una configuración de nodo único) sepa qué documento fue el último en mostrarse, y por lo tanto, puede devolver solo el número de rows de documentos desde la posición actual para cada nodo. Si hiciera la primera versión, cada nodo tendría que devolver los documentos de start + rows . Por lo tanto, en lugar de tratar de averiguar "qué documentos son los diez después de 20001", solo tiene que responder "qué documentos son los siguientes diez después de esta clave de clasificación".

Además, cursorMarks maneja mejor las actualizaciones del conjunto de resultados, ya que evita cualquier cambio en el conjunto de resultados que empujaría los documentos que ya se han mostrado de vuelta a la siguiente página que está mostrando.

Consulte la guía de referencia para ver ejemplos completos y descripciones adicionales.

Quiero utilizar Solr para mi sitio web como motor de búsqueda y estoy tratando de entender la diferencia entre la paginación básica y la paginación profunda con marcador de cursor.

Por lo que yo entiendo, si usa la paginación básica y consulta la página 1001 con 20 resultados por página, esto sucederá:

  • Solr encontrará los primeros resultados de búsqueda de 1000 * 20
  • visualiza los siguientes 20 resultados para 1001 page

Supongo que el problema es cuando alguien hace clic en la página siguiente. Solr encontrará primero los resultados de 1001 * 20 y luego mostrará los resultados deseados.

No he visto un ejemplo apropiado para la búsqueda profunda con números grandes. Solo con números pequeños, así que no estoy seguro de esto. ¿Alguien puede aclararlo por favor?

¿El siguiente ejemplo es correcto?

.../query?q=id:book*&sort=pubyear_i+desc,id+asc&fl=title_t,pubyear_i&rows=1&cursorMark=*

Esto me da el "nextCursorMark": "AoJcfCVib29rMg =="

Ahora que tengo el nextCursorMark puedo ir y encontrar la página que desee. ¿Debo pasar ahora por las páginas manualmente? ¿Debo crear un bucle en el que busco esa página en particular que quiero?

¿O debería tener la primera consulta con 20000 filas, obtener el nextCursorMark y luego usarlo con otra consulta que tenga solo 20 filas?

Me resulta un poco extraño ejecutar una consulta con 20000 filas solo para obtener el nextCursorMark. ¿Es la forma correcta de hacerlo?

¿Y qué pasa si, por ejemplo, tiene 10 páginas y el usuario desea hacer clic en la página 5 de la página 1. ¿Necesitaré ir a cada página manualmente para llegar allí?

Editar:

He leído esto: ¿Cómo administrar "paginación" con Solr?

Y esto: https://lucidworks.com/blog/2013/12/12/coming-soon-to-solr-efficient-cursor-based-iteration-of-large-result-sets/

Intenté encontrar un ejemplo de trabajo pero no pude.