counts solr hierarchy facet

facet counts solr



jerarquía de geografía solr (4)

Echa un vistazo a Pivote (es decir, Árbol de decisiones) Faceting: http://wiki.apache.org/solr/SimpleFacetParameters#Pivot_.28ie_Decision_Tree.29_Faceting

Es compatible con Solr 4.0

He estado tratando de encontrar una forma de implementar facetas con jerarquías en solr y no puedo encontrar la manera de hacerlo en mi situación. He leído un par de artículos sobre cómo hacer jerarquías en Solr junto con las soluciones del parche 64 y 792. El principal problema que tengo es que tengo entidades que pueden pertenecer a múltiples ramas de la jerarquía. La forma actual de mis datos es un documento de usuario con MVA para país, estado y ciudad.

Tomemos, por ejemplo, una jerarquía geográfica en la que las personas pueden listar sus servicios hasta un nivel de ciudad. Una persona puede servir a todo Alabama pero solo a ciertas ciudades en Georgia. Ahora el recuento de facetas para el nivel estatal cuenta los individuos distintos que dan servicio a un área que es 1 para Alabama y 1 para Georgia y cuando se expande hasta el nivel de ciudad tiene un recuento para cada ciudad (en otras palabras, la suma de la ciudad los recuentos no serán necesariamente iguales al recuento de estado ya que los recuentos no son mutuamente excluyentes).

EE. UU. (1)
Georgia (1)
Atlanta (1)
Columbus (0)
Atenas (0)
Alabama (1)
Móvil (1)
Birmingham (1)
Huntsville (1)

La parte de la que me estoy colgando es cuando me estoy enfrentando en las ciudades. No tengo forma de saber a qué estado pertenecen ya que el usuario aparece en Alabama y Georgia, y no puedo encontrar la manera de relacionar los atributos con cada uno. otro. Solr-64 podría funcionar si es compatible con múltiples ramas como US / Alabama / Mobile / y US / Georgia / Atlanta / para el mismo documento. A partir de ahora no he podido compilar con la compilación nocturna, así que estoy algo atrapado.

¿Alguien tiene una mejor manera de hacer esto?


No estoy tan familiarizado con su problema, pero parece que necesita hacer un grupo por ciudad, estado.

Eche un vistazo a la función de agrupar en SOLR llamada colapso de campo (http://wiki.apache.org/solr/FieldCollapsing).

Además, eche un vistazo a bobo-browse también. Específicamente, compositeFacetHandlers http://code.google.com/p/bobo-browse/wiki/CompositeFacetHandlers . bobo-browse se puede integrar en SOLR (http://code.google.com/p/bobo-browse/wiki/SolrIntegration)


Suponiendo que sus documentos en el índice representan un solo servicio ....

Para la ciudad, fabrique un campo que sea el estado concatenado con la ciudad utilizando un delimitador de algún tipo. Este campo no tiene que mostrarse nunca al usuario, puede ser además de un campo que almacena pero no indice, que es el nombre real de la ciudad.

Por ejemplo, podría tener un campo city_facet con valores de:

  • "Ohio - Miami"
  • "Florida - Miami"

Probablemente desee elegir un delimitador que sea más seguro. Me imagino que un guión podría ser un conflicto potencial.


Vea el primer caso de uso descrito aquí . (¡Es necesario el procesamiento del lado del cliente para indexar y consultar!)

Categoría de navegación

El problema: tienes un árbol de categorías y tus productos están categorizados en múltiples de esas categorías.

Hay dos soluciones similares relativas para este problema. Describiré uno de ellos:

  • Crea un campo de cadena multivalor llamado ''categoría''. Use la identificación de categoría (o nombre si desea evitar las consultas de DB).
  • Usted tiene un árbol de categorías. Asegúrese de que un documento obtenga no solo la categoría de hoja, sino todas las categorías hasta el nodo raíz.
  • Ahora faceta sobre el campo de categoría con ''-1'' como límite
  • Pero, ¿y si quieres mostrar solo las categorías de un nivel? Por ejemplo, si no quieres otro nivel a la vez o si son demasiado.

    Luego indexe el campo de categoría ala <level>_category . Para eso, necesitará el árbol de categoría completo en la RAM durante la indexación. Luego use facet.prefix=<level>_ para filtrar la lista de categorías para el nivel

  • Al hacer clic en una entrada de categoría debería fq=category:”<level>_categoryId” una consulta de filtro fq=category:”<level>_categoryId”
  • La pequeña parte difícil ahora es que tu UI o nivel medio tiene que analizar el nivel, por ejemplo, 2 y el agregado 2 + 1 = 3 a la consulta: facet.prefix = 3_
  • Si filtra el nivel, una pregunta permanece:

    P: ¿cómo se puede mostrar la ruta desde la categoría seleccionada hasta la categoría raíz?

    A: Obtenga los padres de categoría a través de DB, lo cual es fácil si almacena los ID de categoría en Solr, no los nombres de categoría. O obtenga los padres de la lista de parámetros, que es un poco más complicado pero factible. En este caso, deberá guardar los nombres de las categorías en Solr.