Todos los productos
Search
Centro de documentos

OpenSearch:Diversificación de resultados: la cláusula distinct

Última actualización: Sep 04, 2026

La cláusula distinct diversifica los resultados de búsqueda al limitar cuántos documentos con el mismo valor de campo aparecen juntos. Este tema aborda la sintaxis de la cláusula, los parámetros dist_count y dist_times, y el plugin distinct uniq.

Descripción general de la función

La cláusula distinct mejora la diversidad de los resultados. Cuando varios documentos del mismo usuario obtienen puntuaciones altas, pueden dominar los primeros resultados y llenar la página con contenido de una sola fuente. La cláusula distinct soluciona esto mediante el muestreo de documentos de cada usuario, lo que permite que aparezcan documentos de una gama más amplia de usuarios.

Sintaxis

La sintaxis de la cláusula distinct es: dist_key:field,dist_count:1,dist_times:1,reserved:false

Parámetro

Tipo

Obligatorio

Valores válidos

Valor predeterminado

Descripción

dist_key

string

Sí

Campo utilizado para la diversificación.

dist_times

int

No

1

Número de rondas de muestreo.

dist_count

int

No

1

Número de documentos que se muestrean en cada ronda.

reserved

true/false

No

true/false

true

Indica si se conservan los documentos restantes después del muestreo. Si se establece en false, los documentos restantes se descartan, lo que provoca que el recuento total de resultados coincidentes sea inexacto.

update_total_hit

true/false

No

true/false

false

Cuando reserved es false, si establece update_total_hit en true, el valor final de total_hit se reduce según la cantidad de documentos descartados por distinct. Es posible que este número no sea exacto. Si es false, el número no se reduce.

dist_filter

string

No

Condición de filtro. Los documentos filtrados no participan en la operación distinct y se ordenan junto con el primer grupo de resultados devueltos por distinct. De forma predeterminada, todos los documentos participan en la operación distinct.

grade

float

No

Especifica umbrales para dividir los documentos en grados. La operación distinct se realiza entonces sobre los documentos dentro de cada grado. Si no se especifica este parámetro, todos los documentos se tratan como un solo grado. Los documentos se clasifican según sus puntuaciones del criterio de ordenamiento de primera dimensión. Utilice una tubería (

) para separar varios umbrales. No hay límite en la cantidad de grados. Por ejemplo: 1. grade:3.0: Divide los documentos en dos grados según la puntuación de ordenamiento de primera dimensión. Los documentos con puntuaciones menores a 3.0 pertenecen al primer grado. Los documentos con puntuaciones de 3.0 o superiores pertenecen al segundo grado. 2. `grade:3.0

5.0`: Divide los documentos en tres grados. El primer grado corresponde a puntuaciones menores a 3.0. El segundo grado abarca puntuaciones desde 3.0 hasta 5.0. El tercer grado incluye puntuaciones de 5.0 o superiores. El orden de los grados sigue el orden de clasificación del criterio de primera dimensión. Por ejemplo, si el orden es descendente, los grados también se ordenan de mayor a menor.

Explicación de dist_count y dist_times

A continuación, se presentan ejemplos que ilustran el funcionamiento de dist_count y dist_times. Suponga que tiene seis documentos donde id es la clave principal y name es el campo de diversificación:

doc1: id:11 name:a

doc2: id:22 name:a

doc3: id:33 name:a

doc4: id:44 name:b

doc5: id:55 name:c

doc6: id:66 name:c

Caso 1: La configuración distinct=dist_key:name,dist_count:2,dist_times:1,reserved:false especifica una ronda de muestreo y dos documentos por ronda. El resultado diversificado es: doc1, doc2, doc4, doc5 y doc6.

Caso 2: La configuración distinct=dist_key:name,dist_count:1,dist_times:2,reserved:false especifica dos rondas de muestreo y un documento por ronda. El resultado diversificado es: doc1, doc4, doc5, doc2 y doc6.

Caso 3: La configuración distinct=dist_key:name,dist_count:1,dist_times:1,reserved:false especifica una ronda de muestreo y un documento por ronda. El resultado diversificado es: doc1, doc4 y doc5.

Notas

  1. La cláusula distinct es opcional.

  2. Los campos utilizados en la cláusula distinct deben configurarse como campos de propiedad en el esquema de la aplicación.

  3. Solo se admiten los tipos de campo int y literal. Los tipos de matriz no son compatibles.

  4. No se pueden especificar varios parámetros dist_key.

  5. El ordenamiento no elimina duplicados automáticamente. Sin embargo, puede usar la cláusula distinct para deduplicar resultados. Por ejemplo, para eliminar artículos duplicados que tienen el mismo título, establezca dist_key en title, dist_times en 1 y dist_count en 1.

El plugin distinct uniq

Cuando reserved es false, los valores total y viewtotal pueden volverse inexactos, lo que causa problemas en la paginación u otras operaciones. El plugin distinct uniq corrige estos valores cuando dist_times es 1, dist_count es 1 y reserved es false. Para usar el plugin, agregue duniqfield:field a la cláusula kvpair. Para obtener más información, consulte the kvpair clause. Por ejemplo: kvpairs=duniqfield:name

Nota:

  • field debe ser igual al dist_key de la cláusula distinct.

  • El plugin solo es efectivo para consultas donde dist_times es 1, dist_count es 1 y reserved es false.

  • Por motivos de rendimiento, el plugin devuelve un valor total máximo de 5,000. Si la cantidad real de resultados de búsqueda supera los 5,000, el valor total se devuelve como 5,000 de todas formas.

  • Este límite de 5,000 para el valor total aplica únicamente cuando se usa el plugin distinct uniq. Si no se utiliza el plugin, el valor total no tiene un tope de 5,000.

  • Si usa este plugin y la consulta abarca un gran volumen de datos, como millones de registros, la consulta podría agotar el tiempo de espera.

Ejemplos

  1. Busque documentos que contengan "Zhejiang University" y se hayan creado después de la marca de tiempo 1402301230. Diversifique los resultados según el campo company_id. Realice 10 rondas de muestreo y tome 2 resultados por ronda.

    query=default:'Zhejiang University'&&filter=create_time>1402301230&&distinct=dist_key:company_id,dist_count:2,dist_times:10
  2. Busque documentos que contengan "Zhejiang University". Use el campo company_id para deduplicar los resultados y conserve solo un documento por empresa. Descarte los documentos restantes y actualice el recuento total de coincidencias.

    query=default:'Zhejiang University'&&distinct=dist_key:company_id,dist_count:1,dist_times:1,reserved:false&&kvpairs=duniqfield:company_id