Todos los productos
Search
Centro de documentos

OpenSearch:Rough sort functions

Última actualización: Sep 05, 2026

Este tema describe las funciones disponibles para la clasificación preliminar.

Descripción general

La clasificación preliminar es una etapa de filtrado inicial que identifica rápidamente los documentos de alta calidad en los resultados de búsqueda iniciales y selecciona los N documentos principales. Estos documentos seleccionados pasan posteriormente por una clasificación fina, la cual implica una puntuación más detallada para determinar la clasificación final. La clasificación preliminar tiene un impacto significativo en el rendimiento, mientras que la clasificación fina determina principalmente la calidad de la búsqueda. Por lo tanto, la clasificación preliminar debe ser simple y eficiente, y utilizar únicamente los factores clave de la clasificación fina. Tanto la clasificación preliminar como la fina se configuran mediante expresiones de ordenamiento.

Funciones

**static_bm25: Relevancia de texto estática**

  • Para obtener más información, consulte static_bm25.

  • Parámetros: Ninguna.

  • Valor de retorno: Un valor flotante en el rango de [0, 1].

  • Caso de uso: Para utilizar la puntuación de relevancia de texto estática en una clasificación preliminar, establezca la expresión en static_bm25().

  • Notas de uso: La función static_bm25() se utiliza de forma predeterminada en la expresión de clasificación preliminar default.

Nota

Cuándo la puntuación de static_bm25() puede superar 1:

Si configura el análisis de consultas, por ejemplo para sinónimos, la puntuación puede ser mayor a 1. Por ejemplo, una consulta predeterminada es query=index:'apple'. Después de configurar sinónimos, la consulta se expande a query=index:'apple' OR index:'iphone'. Si un documento contiene tanto "apple" como "iphone", las puntuaciones de static_bm25() se suman. Como resultado, la puntuación final de la clasificación preliminar puede exceder 1.

**exact_match_boost: Peso máximo de impulso**

  • Para obtener más información, consulte exact_match_boost.

  • Parámetros: Ninguna.

  • Valor de retorno: Un entero en el rango de [0, 99].

  • Caso de uso: Para ordenar resultados según el peso de impulso especificado para cada término coincidente en una consulta. Por ejemplo, considere la consulta query=default:'Open Search'^60 OR default:'opensearch'^50. Si el documento A contiene "Open Search" y el documento B contiene "opensearch", el documento A se clasifica por encima del documento B. Para lograr esto, establezca la expresión de clasificación preliminar en exact_match_boost().

  • Notas de uso:

    • Esta función requiere que el campo objetivo esté indexado.

    • Para los términos de consulta sin un valor de impulso especificado, el valor de impulso predeterminado es 99.

    • En aplicaciones exclusivas, al configurar la función exact_match_boost en una clasificación preliminar, puede usar una de las siguientes opciones de parámetro: '', 'sum' o 'max'. En la página de edición de directivas, para la función de puntuación **exact_match_boost(), seleccione un método de agregación en la lista desplegable search field: max o sum. Luego, establezca el weight** correspondiente.

**timeliness: Puntuación de actualidad**

  • Sintaxis: timeliness(pubtime). Para obtener más información, consulte timeliness.

  • Parámetros: pubtime es el campo que se va a evaluar. El campo debe ser de tipo int y el valor debe ser una marca de tiempo UNIX en segundos.

  • Valor de retorno: Un valor flotante en el rango de [0, 1]. Un valor mayor indica un documento más reciente. Si la marca de tiempo corresponde al futuro, la función devuelve 0.

  • Casos de uso: Calcule la puntuación de actualidad del campo create_timestamp en una clasificación preliminar. Establezca la expresión en timeliness(create_timestamp).

  • Notas de uso: Debe configurar el campo pubtime como un campo de atributo.

**timeliness_ms: Puntuación de actualidad**

  • Sintaxis: timeliness_ms(pubtime). Para obtener más información, consulte timeliness_ms.

  • Parámetros: pubtime es el campo que se va a evaluar. El campo debe ser de tipo int y el valor debe ser una marca de tiempo UNIX en milisegundos.

  • Valor de retorno: Un valor flotante en el rango de [0, 1]. Un valor mayor indica un documento más reciente. Si la marca de tiempo corresponde al futuro, la función devuelve 0.

  • Casos de uso: Calcule la puntuación de actualidad del campo create_timestamp en una clasificación preliminar. Establezca la expresión en timeliness_ms(create_timestamp).

  • Notas de uso: Debe configurar el campo pubtime como un campo de atributo.

**normalize: Función de normalización**

  • Durante el cálculo de relevancia, la calidad de un documento se mide en diferentes dimensiones. Las puntuaciones de estas dimensiones pueden tener rangos muy distintos. Por ejemplo, los clics en una página pueden contarse por millones, mientras que una puntuación de relevancia de texto estática oscila entre 0 y 1. Estas puntuaciones no son directamente comparables. Para utilizarlas en una sola fórmula, debe normalizarlas a un rango común. La función normalize simplifica este proceso y admite tres métodos de normalización: lineal, logarítmico y arcotangente. La función selecciona automáticamente un método según los parámetros proporcionados. Si solo especifica el parámetro value, utiliza el método de arcotangente. Si especifica value y max, utiliza el método logarítmico. Si especifica value, max y min, utiliza el método lineal.

  • Sintaxis: normalize(value, max, min). Para obtener más información, consulte normalize.

  • Parámetros: value es el valor que se va a normalizar, el cual debe ser de tipo double. El valor puede provenir de un campo del documento o de otra expresión. max es el valor máximo de entrada opcional, que debe ser de tipo double. min es el valor mínimo de entrada opcional, que debe ser de tipo double.

  • Valor de retorno: Un valor double en el rango de [0, 1].

  • Casos de uso:

    • Escenario 1: Para normalizar el campo price sin conocer su rango de valores, utilice la siguiente expresión: normalize(price).

    • Escenario 2: Para normalizar el campo price cuando solo sabe que su valor máximo es 100, utilice la siguiente expresión: normalize(price, 100).

    • Escenario 3: Para normalizar el campo price cuando sabe que su valor máximo es 100 y su valor mínimo es 1, utilice la siguiente expresión: normalize(price, 100, 1).

    • Escenario 4: Para normalizar el resultado de una función distance al rango [0, 1], utilice la siguiente expresión: normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query)).

  • Notas de uso:

    • Los campos utilizados como parámetros de la función deben configurarse como campos de atributo.

    • Al utilizar el método de arcotangente para la normalización, si el value es menor que 0, el valor normalizado será 0.

    • Al utilizar el método logarítmico para la normalización, el valor max debe ser mayor que 1.

    • Al utilizar el método lineal para la normalización, el valor max debe ser mayor que el valor min.