solr group-by multivalue

solr - ¿Hay alguna solución alternativa para clasificar en el campo multiValued?



group-by (1)

La ordenación se puede hacer en el "puntaje" del documento, o en cualquier campo multiValued = "false" indexed = "true", siempre que el campo no esté tokenizado (es decir, no tenga Analyzer) o use un analizador que solo produzca un término único (es decir: utiliza el KeywordTokenizer)

documentos: - http://wiki.apache.org/solr/CommonQueryParameters#sort

Mi esquema original es (Puede considerar que lo siguiente es un GROUP-BY):

  • productos (id, único)
    • usuarios que hacen algunos comentarios (multiValued)
    • last_comment_date para cada usuario (multiValued, un usuario puede hacer múltiples comentarios, pero solo se captura la fecha del último comentario)

Si está permitido ordenar en multiValued,
Puedo obtener fácilmente una lista de los productos comentados por ciertos usuarios,
luego ordenar por last_activity_date.

Sin embargo, no funciona.
La solución alternativa que tengo actualmente es invertir el esquema para:

  • usuario + producto (como id, único)
  • usuario (valor único)
  • last_comment_date
  • productos

Lo que significa que yo (más o menos) logro obtener una lista de los productos comentados por ciertos usuarios,
ordenar por last_comment_date,
por supuesto, conduce a la duplicación de productos
como producto aparecerá en cada uno de los comentarios del usuario.

Cualquier sugerencia para simular un grupo por efecto.

Entre, yo usando solr 3.1.
El colapso en el campo no aplica.


Ordenar por un campo con múltiples valores no es algo que esté pendiente de hacer o que pueda parchearse.

No se puede hacer posiblemente porque simplemente no tiene ningún sentido.

La forma de hacerlo es tener un campo de un solo valor (rellenado en el índice de tiempo con la última fecha) por documento, luego ordenarlo. Es decir, cuando la indexación recorre la lista de usuarios con su última fecha de actividad, busque la fecha más reciente y asígnela al campo de fecha de la última actividad del documento.