Cómo funciona la agrupación de productos

La característica de agrupación de productos de Solr permite agrupar las entradas de catálogo padre con los códigos de artículo subyacentes en el momento de la consulta. Se pueden elegir los productos para representar el grupo que se devuelve en los resultados de búsqueda a fin de proporcionar relevancia visual.

Se indexa un campo de índice común entre un producto y los códigos de artículo subyacentes, que se utiliza posteriormente como campo de agrupación. Al consultar el índice de búsqueda, los parámetros de agrupación se añaden a la consulta de Solr. Como resultado, la respuesta de búsqueda se estructura en grupos, en lugar de hacerlo en una lista de documentos de Solr. Cada grupo contiene una lista de documentos Solr relacionados. Se aplican el número de filas y la paginación al número de grupos, en lugar de hacerlo al número de documentos de Solr devueltos.

Se utiliza la siguiente terminología para la agrupación de productos:
Campo de agrupación
​​Campo de índice​ Nombre​ que se utiliza para la agrupación.
Valor de grupo
Valor de campo de agrupación que se indexa. Cada grupo contiene valores de grupo dedicados que son comunes entre todos los miembros.
Group
Documentos de Solr relacionados que comparten el valor de campo de agrupación.
Propietario de grupo
Documento de Solr con un ID exclusivo (catentry_id) que coincide con un valor de campo de agrupación. Es decir, el documento de Solr que se devuelve en el conjunto de resultados final. Cada grupo debe tener un propietario de grupo.
Representante de grupo
El documento de Solr que se selecciona para que sea la coincidencia de documento más relevantes para el término de búsqueda o que contiene un valor de propiedad o atributo determinado. En algunos casos, se selecciona que se devuelva el representante de grupo en el resultado de búsqueda final; o algunas de sus propiedades alteran las propiedades de propietario de grupo.
Miembro de grupo
Cualquier documento de Solr de un grupo.

Proceso de selección de resultados de grupo

El diagrama siguiente muestra el proceso de respuesta de grupo de búsqueda y de selección de propietario de grupo de ejemplo:
Ejemplo de proceso de respuesta de grupo de búsqueda y de selección de propietario de grupo
Donde:
  • Una consulta de búsqueda genera siete documentos de Solr coincidentes, que se agrupan en tres grupos distintos.
  • Cada grupo contiene documentos comunes que comparten el valor de campo de agrupación.
  • El primer grupo contiene tres documentos de Solr, 2 códigos de artículo y su producto, el propietario de grupo. Dado que el propietario de grupo se devuelve como uno de los miembros de grupo, se selecciona que el documento de Solr de propietario de grupo se devuelva en la lista de documentos de Solr final.
  • El segundo grupo contiene tres documentos de Solr, todos los códigos de artículo. El propietario de grupo no está entre los miembros de grupo. Por lo tanto, se selecciona que se devuelva el primer documento de Solr en la lista de documentos de Solr final o se recupera del índice el propietario de grupo.
    El parámetro QueryMissingGroupOwner de perfil de búsqueda heroproduct controla si se deben obtener todos los propietarios de grupo que faltan de una llamada por lotes
    Nota: Existen varias razones por las que el propietario de grupo puede faltar en la respuesta original. Por ejemplo, el término de búsqueda no ha generado resultados de búsqueda en el producto, especialmente si el término de búsqueda coincide con los atributos de producto ampliados donde los valores solo están definidos a nivel de código de artículo. O bien, si el propietario de grupo se ha quedado fuera del filtro porque no se ha publicado, autorizado, no coincide con el tipo de búsqueda especificado o tiene un recuento de inventario suficiente.
  • El tercer grupo contiene solo un documento de Solr, el propietario de grupo. Por lo tanto, se selecciona y se añade a la lista de documentos de Solr final.

    Si el parámetro heroproduct de perfil de búsqueda QueryMissingGroupOwner se ha configurado para recuperar del índice propietarios de grupo que faltan y, por cualquier razón, no se devuelve el propietario de grupo (por ejemplo, no está publicado o autorizado), se selecciona el primer documento de Solr como propietario de grupo.

  • Como resultado de este proceso de selección, otros postprocesadores definidos en el perfil de búsqueda seleccionan y procesan adicionalmente tres de siete documentos de Solr.

Los recuentos de facetas se pueden configurar para que se basen en los documentos de Solr originales o para que se basen en el número de grupos.

Agrupación de procesadores y perfiles de búsqueda

SearchRelevancyByProductGroupingQueryPreprocessor se utiliza para leer los parámetros de agrupación de un perfil de búsqueda y añadirlos a la consulta de búsqueda. Está habilitado cuando el valor de relevancyType se establece en 2.

SearchRelevancyByProductGroupingPostprocessor se añade como el primer posprocesador para manejar la respuesta de grupo de búsqueda. El postprocesador solo selecciona un documento de Solr de cada grupo y crea una lista de documentos de Solr plana para que la consuman otros postprocesadores. A continuación, se devuelve el resultado en la respuesta de REST final. Está habilitado cuando el valor de relevancyType se establece en 2.

El servicio productViewbySearchTermServices de REST puede utilizar los perfiles de búsqueda IBM_findProductsBySearchTerm, IBM_findProductsByNameAndShortDescriptionOnly, IBM_findProductsByNameOnly y IBM_findProductsByUnstructureOnly

El servicio productViewbyCategoryId de REST puede utilizar los perfiles de búsqueda IBM_findProductsByCategory y ComposeFacetListByCategoryId

El siguiente fragmento de código es una configuración de grupo de ejemplo tal como se define en un perfil de búsqueda:

<_config:group>
   <_config:param name="group" value="true"/>
   <_config:param name="group.limit" value="100"/>
   <_config:param name="group.facet" value="true"/>
   <_config:param name="group.sort" value="score desc"/>
   <_config:field name="grouping_parentCatentry_id"/>
</_config:group>
Donde:
group
true
Se habilita la agrupación.
false
No se evalúa ninguna de las demás agrupaciones.
group.limit
Controla el número máximo de documentos de Solr a devolver por grupo.
group.facet
true
El recuento de facetas se calcula basándose en el número de grupos.
false
El recuento de facetas se calcula basándose en el número de entradas de catálogo.
group.sort
Controla cómo se ordenan las entradas de catálogo en cada grupo.
field
El nombre de campo por el que agrupar.

Puede añadir más parámetros de agrupación utilizando el mismo convenio group.parameter_name. Para obtener más información sobre los parámetros de agrupación, consulte Result Grouping / Field Collapsing.

Representantes de grupo

Hay un representante de grupo para cada agrupación de producto. En lugar de devolver el propietario de grupo, se pueden devolver en su lugar uno de los códigos de artículo o algunas de sus propiedades, junto con el propietario de grupo. O bien, en lugar de ignorar los otros miembros de grupo, el rango de precios se puede encontrar en los miembros de grupo.

El diagrama siguiente muestra el proceso de selección de producto de representante:
Ejemplo de proceso de selección de producto de representante
Donde:
  • El primer grupo contiene cuatro miembros de grupo.
  • Uno de los códigos de artículo está marcado con un valor de atributo de comercialización de Hot. Se selecciona ese código de artículo para que sea el representante de grupo.
  • El propietario de grupo está entre los miembros de grupo. Sin embargo, antes de añadir el propietario de grupo a la lista de documentos de Solr final, se utiliza la propiedad de miniatura de representante de grupo para alterar la propiedad de miniatura de propietario de grupo. Por lo tanto, el propietario de grupo que se añade a la lista de documentos de Solr final incluye algunas de las propiedades de representante de grupo.
  • El segundo grupo contiene tres miembros de grupo, ninguno de los cuales es el propietario de grupo y ninguno de los cuales contiene el mismo valor de atributo de comercialización. Por lo tanto, se selecciona el primer documento de Solr para que sea el representante de grupo, ya que es el más importante.

    Similar a la agrupación, si el parámetro de consulta de perfil de búsqueda QueryMissingGroupOwner se configura para recuperar del índice los propietarios de grupo que faltan, se ejecuta en un proceso por lotes para todos los grupos para el tamaño de página actual.

  • Después de recuperar el propietario de grupo, se utiliza la propiedad de representante de grupo para alterar la propiedad de propietario de grupo. De lo contrario, se selecciona el representante de grupo para que se devuelva en la lista de documentos de Solr final.
  • El tercer grupo, similar a la agrupación, contiene solo un miembro del grupo, el propietario de grupo. Por lo tanto, se selecciona y se añade a la lista de documentos de Solr final.
  • Como resultado de este proceso de selección, otros postprocesadores que se han definido en el perfil de búsqueda seleccionan y procesan adicionalmente tres de los ocho documentos de Solr.
El fragmento de código siguiente es una configuración de producto de representante de ejemplo tal como se define en un perfil de búsqueda:

<_config:heroproduct>
   <_config:param name="QueryMissingGroupOwner" value="true"/>
   <_config:param name="overrideFieldName" value="thumbnail"/>
   <_config:param name="showGroupPriceRange" value="true"/>
   <_config:field name="ads_f10003" value="Hot"/>
</_config:heroproduct>
<_config:result>
   <_config:field name="ads_f10003"/>
</_config:result> 
Donde:
overrideFieldName
Toma una lista de campos a transportar desde el producto para alterar los valores predeterminados de productBean.
ads_f10003
El nombre de campo del atributo de búsqueda.
showGroupPriceRange
Se habilita para que se muestre el rango de precios para el grupo entero, en lugar de solo el precio del producto, si los miembros de grupo contienen precios diferentes.
Campo
Toma el nombre de campo exclusivo y su valor para el producto, que representa el representante de grupo. Se debe añadir el mismo campo a los campos devueltos de resultados de perfil que se deben evaluar para cada entrada de catálogo.
Nota: El nombre de campo real, en este ejemplo, representa un atributo de comercialización que se asigna como un atributo descriptivo a los códigos de artículo de representante.