tutorial features example solr lucene search-engine solr4

features - solr vs elasticsearch



SOLR-Agrupar resultados con group.limit return wrong numFound (5)

Cuando realizo una búsqueda con un resultado de agrupación y realizo un límite de grupo, entiendo que numFound es el mismo que yo cuando no uso el límite.

Parece que SOLR realiza primero la búsqueda y calcula numFound y luego limita los resultados.

No puedo usar paginación y otras cosas. ¿Hay alguna solución o me perdí algo?

Ejemplo:

====================================== | id | publisher | book_title | ====================================== | 1 | A1 | Title Book | | 2 | A1 | Book title 123 | | 3 | A1 | My book | | 4 | B2 | Hi book title | | 5 | B2 | Another Book |

Si realizo una consulta:

q=book_title:book &group=true &group.field=publisher &group.limit=1 &group.main=true

Obtendré numFound 5 pero solo 2 en los resultados .

"response": { "numFound": 5, "docs": [ { "book_title": "My book", "publisher": "A1" }, { "book_title": "Another Book", "publisher": "B2" } ] }


numFound se refiere a la cantidad total de documentos encontrados por solr después de ejecutar su consulta, que también es algo que necesitará para hacer una paginación basada en esa consulta.

La paginación en solr es bastante similar a la que se maneja con los RDBMS regulares, necesitará usar los parámetros de inicio y filas , por ejemplo, la ejecución de la siguiente consulta dará como resultado obtener 10 documentos a partir del documento número 20:

?q=you_key_word&start=20&rows=10

Esta consulta obtendrá el contenido deseado para la página de destino "esto generaría la página número 3 en este caso suponiendo que tiene 10 documentos / página" y, por supuesto, en lugar de ejecutar otra consulta para conocer el número total de documentos el número de páginas, usted tendría esta información generada automáticamente para usted representada por el valor de "numFound".

Espero que esto ayude


Tuve el mismo problema, no pude encontrar una manera de solucionar la causa raíz, pero compartiré mi solución como una solución alternativa .

Lo que hice es

  1. Faceta por el campo en el que me estoy agrupando.
  2. Cuenta el número de facetas únicas. Esto coincidirá con la cantidad de documentos únicos (2 en su caso)

Agregue estos parámetros de facetado a su consulta:

&facet=true &facet.limit=-1 &facet.field=publisher

Notas:

  • Esto es un poco caro, pero es la única forma que funcionó para mí (hasta ahora).
  • Esto solo funcionará si el editor no tiene valores múltiples

Establezca group.ngroups en true . Eso producirá

"grouped": { "bl_version_id": { "matches": 53, "ngroups": 18, "groups": [ { ...


group.limit no es un límite real, solo devuelve NumRows.

No hay una solución fácil implementada en Solr para mi problema.

Puede encontrar una respuesta aquí Solr User Group


numFound indica el total no. del documento coincidente para la consulta actual, aquí en su caso 5 es correcto, aunque le dio group.limit=1 le dará max. 1 documento por grupo a pesar de que hay muchos documentos que residen en ese grupo. Le sugiero que use group.limit=-1 en su consulta, devolverá los 5 documentos en el resultado.

Para obtener más información, consulte los detalles que figuran a continuación.

solr fieldcollapsing y maximum group.limit

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