counts search facet solr

search - facet counts solr



SOLR-Cómo tener conteos de facetas restringidos a filas devueltas en el conjunto de resultados (4)

/select/?q=*:*&rows=100&facet=on&facet.field=category

Tengo alrededor de 100 000 documentos indexados. Pero devuelvo solo 100 documentos usando rows = 100. Los recuentos de facetas se devolvieron por categoría, sin embargo, devuelve los recuentos de todos los documentos indexados.

¿Podemos de alguna manera restringir las facetas al conjunto de resultados devuelto? es decir, ¿solo 100 filas?


Lo siento, pero no creo que sea posible. Las facetas siempre se basan en todos los documentos que coinciden con la consulta.


No es una respuesta real, pero tal vez mejor que nada: la función de agrupación de resultados (¡mira desde el maletero!):

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

donde facet.field = category es similar a group.field = category y obtendrá solo tantos grupos (''facet hits'') como usted especificó!


Si siempre ejecuta la misma consulta (q=*:*) , tal vez puede usar facet.limit, por ejemplo:

select/?q=*:*&rows=100&facet=on&facet.field=category&facet.limit=100

Díganos si el orden que usa solr es el mismo en la faceta que en la consulta :.


No creo que sea posible de manera directa, como lo señaló Pascal.

Puedo ver dos formas de lograr esto:

  1. Método I: haga el recuento visitando los 100 resultados devueltos. Esto es muy fácil y rápido si son campos categóricos, pero más difícil si son campos de texto que necesitan ser tokenizados, etc.

  2. Método II: haz dos pases:

    1. Realice una consulta normal sin facetas (solo necesita solicitar identificadores de documento en este punto)
    2. Recoge todas las identificaciones de los documentos devueltos
    3. Haga una segunda consulta para todos los campos y las facetas, agregando un filtro para restringir el resultado a los ID recopilados en setp 2. Algo así como:
      select/?q= : &facet=on&facet.field=category&fq=id:(312 OR 28 OR 1231 ...)

El primero es mucho más eficiente y lo recomendaría para los gráficos no textuales. El segundo es computacionalmente costoso, pero tiene la ventaja de funcionar para todos los tipos de campos od.