tutorial guide create collection solr relevance

guide - solr xls



Solicite documentos de solr con el mismo puntaje por fecha agregada descendiendo (2)

Puede usar múltiples condiciones SORT:

Los ordenamientos múltiples pueden separarse con una coma, es decir: sort = + [, +] ...

http://wiki.apache.org/solr/CommonQueryParameters

Entonces, en tu caso sería: sort = puntuación DESC, date_added DESC

Quiero que los resultados de búsqueda de SOLR se ordenen así:

Todos los documentos que tienen el mismo puntaje se ordenarán descendiendo por fecha agregada.

Entonces cuando consulto solr tendré n documentos. En este conjunto de resultados habrá grupos de documentos con el mismo puntaje. Quiero que cada uno de este grupo de documentos se ordene descender por fecha agregada.

Descubrí que puedo lograr esto usando consultas de funciones, más exactamente usando la función rord http://wiki.apache.org/solr/FunctionQuery#rord , pero como se indica en la documentación

ADVERTENCIA: a partir de Solr 1.4, ord () y rord () pueden causar un uso excesivo de memoria ya que deben usar una entrada de FieldCache en el lector de nivel superior, mientras que las consultas de clasificación y función ahora usan entradas a nivel de segmento. Por lo tanto, ordenar o usar una consulta de función diferente, además de ord () / rord () duplicará el uso de la memoria.

causará un uso excesivo de memoria.

¿Qué otras opciones tengo?

Estaba pensando en usar recip(ms(NOW,startTime),1,1,0) . Es este el mejor enfoque ?

¿Hay algún impacto negativo en el rendimiento si uso recip y ms?


Como tus preguntas dicen:

Todos los documentos que tienen el mismo puntaje se ordenarán descendiendo por fecha agregada.

la otra respuesta que obtuviste es perfecta.

De todos modos, te sugiero que te asegures de que realmente quieras ordenar por fecha solo para documentos con el mismo puntaje. En mi experiencia, esto siempre ha sido incorrecto. De hecho, el puntaje de solr no es absoluto sino solo relativo a otros documentos, y cada documento es diferente.

Por lo tanto, no ordenaría por puntaje y luego algo más, porque es difícil predecir cuándo tendrá el mismo puntaje para diferentes documentos. Yo personalmente clasifico solo en score y uso una función para impulsar documentos recientes. Puede encontrar un buen ejemplo en la wiki de solr , la función utilizada es recip(ms(NOW,date_field),3.16e-11,1,1) .

Si le preocupa el rendimiento, puede intentar aumentar el índice de tiempo, lo que debería ser más rápido que aumentar el tiempo de consulta. Echa un vistazo aquí .