Todos los productos
Search
Centro de documentos

OpenSearch:Búsquedas basadas en relevancia

Última actualización: Sep 23, 2026

OpenSearch entrega los resultados mediante un pipeline de tres etapas: análisis de la consulta, coincidencia de documentos y cálculo de puntuación de relevancia. Comprender cada etapa le ayuda a diagnosticar resultados inesperados y ajustar la calidad de las búsquedas.

Cómo funciona

Cuando llega una solicitud de búsqueda, OpenSearch realiza lo siguiente:

  1. Analiza la consulta de búsqueda y la divide en términos con el analizador configurado.

  2. Compara los documentos con esos términos mediante los operadores lógicos de su cláusula de consulta.

  3. Asigna una puntuación a los documentos coincidentes con una expresión de ordenamiento aproximado. Después, reordena los mejores resultados con una expresión de ordenamiento fino.

  4. Devuelve los resultados según los parámetros start y hit.

Para más detalles sobre los analizadores, consulte Text analyzers.

Control de las coincidencias

Los operadores lógicos determinan qué documentos se recuperan. OpenSearch usa AND de forma predeterminada, por lo que solo devuelve los documentos que contienen todos los términos analizados. Para ampliar o refinar la recuperación, utilice los operadores en su cláusula de consulta.

Operadores y sus efectos

Operador

Ejemplo

Efecto

(predeterminado)

query=title:"Apple Mobile phone"

Recupera los documentos cuyo título contiene tanto "Apple" como "Mobile phone".

AND

query=title:'Apple' AND cate:'Mobile phone'

Devuelve la intersección: documentos donde el título contiene "Apple" y el campo cate contiene "Mobile phone".

OR

query=title:'Apple' OR cate:'Mobile phone'

Devuelve la unión: documentos donde el título contiene "Apple" o el campo cate contiene "Mobile phone".

RANK

query=title:'Apple' RANK cate:'Mobile phone'

Recupera los documentos cuyo título contiene "Apple". Los documentos donde cate también contiene "Mobile phone" reciben una puntuación de relevancia más alta.

ANDNOT

query=title:'Apple' ANDNOT cate:'Mobile phone'

Recupera los documentos cuyo título contiene "Apple" y cuyo campo cate no contiene "Mobile phone".

La precedencia de los operadores, de mayor a menor, es a continuación: (), ANDNOT, AND, OR, RANK.

Preguntas frecuentes

¿Es posible buscar documentos donde un término específico aparezca al inicio de un campo?

No. OpenSearch no admite la recuperación basada en posiciones. No se pueden restringir los resultados a documentos donde un término como "KFC" aparezca al principio de un campo.

Control de la puntuación y el orden de los resultados

Después de recuperar los documentos, OpenSearch ejecuta un pipeline de puntuación de dos etapas para ordenarlos por relevancia.

El pipeline de dos etapas

Etapa 1: ordenamiento aproximado

OpenSearch puntúa hasta rank_size documentos (un millón de forma predeterminada) con una expresión de ordenamiento aproximado. Esta etapa define qué N documentos principales pasan al ordenamiento fino. Una expresión de ordenamiento aproximado rápida y eficiente reduce la latencia y garantiza que los documentos de alta calidad lleguen a la etapa de ordenamiento fino.

Las expresiones de ordenamiento aproximado suelen usar uno o varios de estos elementos:

  • Campos simples de índice directo

  • static_bm25(): puntúa los documentos según la relevancia del texto

  • timeliness(): puntúa los documentos según su antigüedad

Etapa 2: ordenamiento fino

Los N documentos principales del ordenamiento aproximado se vuelven a puntuar con una expresión de ordenamiento fino, que admite operaciones matemáticas y lógicas. En este proceso participan cientos de documentos. Las expresiones de ordenamiento fino combinan la relevancia del texto, la antigüedad, las métricas de negocio y las señales de intervención manual. Tras esta etapa, los resultados se devuelven según la puntuación del ordenamiento fino.

Si la cantidad de documentos por devolver supera N, los documentos restantes se ordenan según su puntuación de ordenamiento aproximado.

Qué significa sort=-RANK

Si no se especifica ninguna cláusula de ordenamiento, OpenSearch utiliza sort=-RANK de forma predeterminada. Esto ordena los documentos de mayor a menor puntuación de relevancia. Para agregar un criterio de desempate, añada un campo de ordenamiento secundario:

sort=-RANK;+bonus

Esto ordena por relevancia descendente y luego por bonus ascendente en los documentos con puntuaciones iguales. Consulte Rough sort functions y Fine sort functions para ver la referencia completa de funciones.

OpenSearch también proporciona esquemas de aplicación y expresiones de ordenamiento integrados. Puede consultarlos y utilizarlos en diversos escenarios.

Ejemplos de expresiones de ordenamiento por sector

A continuación se muestra cómo trabajan en conjunto el ordenamiento aproximado y el ordenamiento fino en distintos casos de uso.

Escenario

Etapa

Expresión

Qué puntúa

Foro

Ordenamiento aproximado

static_bm25()

Relevancia del texto

Foro

Ordenamiento fino

text_relevance(title)*3+text_relevance(body)+if(text_relevance(title)>0.07,timeliness(create_timestamp),timeliness(create_timestamp)*0.5)+(topped+special+atan(hits)*0.5+atan(replies))*0.1

Relevancia del texto ponderada por campo, antigüedad y actividad del hilo (vistas, respuestas)

O2O (en línea a físico)

Ordenamiento aproximado

sold_score+general_score*2

Volumen de ventas y puntuación de calidad de la tienda física

O2O (en línea a físico)

Ordenamiento fino

2*sold_score+0.5*reward- 10*distance(lon,lat,u_posx,u_posy)+ if ((flags&2) =2, 2, 0)+if(is_open=5,10,0)+ special_score

Volumen de ventas, rendimiento de entrega, distancia, estado de la tienda y reglas de negocio

Ficción

Ordenamiento aproximado

static_bm25()*0.7+hh_hot*0.00003

Relevancia del texto y popularidad

Ficción

Ordenamiento fino

pow(min(0.5,max(text_relevance(category),max(text_relevance(title), text_relevance(author)))),2)+ general_score*2+ 1.5*(1/(1+pow(2.718281,-((log10(hh_hot)-2)*2-5)))))

Relevancia de categoría, título y autor; calidad de la novela; popularidad

Comercio electrónico

Ordenamiento aproximado

static_bm25()+general_score*2+timeliness(end_time)

Relevancia del texto, puntuación integral del artículo y vencimiento de la publicación

Comercio electrónico

Ordenamiento fino

text_relevance(title)*3+text_relevance(category)+ general_score*2+boughtScore*2+ tag_match(ctr_query_value,doc_value,mul,sum,false,true)+..

Relevancia del texto, relevancia de la categoría, popularidad, calificaciones del vendedor y estimación de la tasa de clics (CTR)

Preguntas frecuentes

¿Por qué ocurre el error 2112?

Los campos de la cláusula de consulta deben coincidir con los de la fórmula de ordenamiento fino. Por ejemplo, si la cláusula de consulta es query=default:'keyword' (que se expande a title y body), pero la fórmula es text_relevance(title)+text_relevance(author), se reporta el error 2112 porque author no está en la cláusula de consulta.

¿Por qué text_relevance() no encuentra un campo?

text_relevance() solo admite campos de tipo TEXT y SHORT_TEXT. No se pueden usar campos de otros tipos con esta función.

Mejora del rendimiento de la puntuación

Precalcular fuera de línea las puntuaciones costosas

Las puntuaciones que no dependen de la consulta de búsqueda (como las calificaciones del vendedor, la popularidad o las puntuaciones de calidad) se pueden calcular fuera de línea y almacenar en un campo dedicado, comúnmente llamado general_score). Haga referencia directa a este campo en las expresiones de ordenamiento en lugar de recalcularlo durante la consulta. Esto reduce el procesamiento por consulta y mejora la latencia.

Usar tag_match para puntuar funciones multidimensionales

tag_match(ctr_query_value, doc_value, mul, sum, false, true) aplica un conjunto de operaciones sobre vectores de características a nivel de consulta y de documento. Se usa ampliamente en comercio electrónico para incorporar la estimación de CTR y señales personalizadas en las expresiones de ordenamiento.

Ajustar los pesos de los factores de manera iterativa

La relevancia depende de varios factores. Comience con las expresiones que correspondan a su sector (consulte la tabla anterior) y ajuste el peso de cada factor según la calidad de búsqueda observada. Cambios pequeños en los pesos generan grandes diferencias en el orden de los resultados.