La clasificación en las búsquedas suele ser un proceso de dos etapas. En la primera, llamada clasificación preliminar, se filtran rápidamente los resultados iniciales para obtener un conjunto más pequeño de documentos de alta calidad. En la segunda etapa, o clasificación detallada, se aplica una lógica de puntuación más compleja a ese conjunto para generar la clasificación final. La clasificación preliminar influye de manera significativa en el rendimiento de la búsqueda, mientras que la clasificación detallada tiene un mayor impacto en la calidad del ordenamiento. Por lo tanto, la clasificación preliminar debe ser sencilla y eficiente, y utilizar únicamente los factores de clasificación más críticos. Ambas configuraciones se definen mediante expresiones de ordenamiento. Este tema describe las funciones que puede usar en una clasificación preliminar.
Funciones disponibles
static_bm25: cálculo de la relevancia estática del texto
Sintaxis: static_bm25()
Parámetros: Ninguna.
Valor de retorno: un valor flotante en el rango [0.0, 1.0].
Escenario: utilice esta función en una expresión de clasificación preliminar para incorporar la puntuación de relevancia estática del texto. Por ejemplo:
static_bm25().-
Notas:
La función
static_bm25()está habilitada de forma predeterminada en la configuración de clasificación preliminardefault.
Cuándo la puntuación de static_bm25() puede superar 1.0:
Si una consulta utiliza funciones de análisis como sinónimos (por ejemplo, cuando la consulta index:'Apple' se expande a query=index:'Apple' OR index:'apple'), la puntuación de static_bm25() se acumula para los documentos que coinciden tanto con 'Apple' como con 'apple'. Esto genera una puntuación final de clasificación preliminar mayor que 1.
exact_match_boost: obtención del peso máximo de impulso
Sintaxis: exact_match_boost()
Parámetros: Ninguna.
Valor de retorno: un número entero en el rango [0, 99].
Escenario: recomendado cuando necesita clasificar documentos según el peso de impulso del término coincidente. Para una consulta como
query=default:'OpenSearch'^60 OR default:'opensearch'^50, un documento que contenga "OpenSearch" se ubicará por encima de uno que contenga "opensearch". La expresión de clasificación preliminar sería:exact_match_boost().-
Notas:
Los campos a los que hace referencia la consulta deben estar configurados como campos de índice.
Para los términos de consulta sin un impulso especificado, el valor de impulso predeterminado es 99.
En aplicaciones exclusivas, la función
exact_match_boostadmitesumymaxcomo parámetros opcionales al usarse en una clasificación preliminar.
timeliness: cálculo de una puntuación de actualidad
Sintaxis: timeliness(pubtime)
Parámetro:
pubtime: el campo que se va a evaluar. Debe ser un número entero que represente una marca de tiempo Unix en segundos.Valor de retorno: un valor flotante en el rango [0.0, 1.0]. Un valor más alto indica un documento más reciente. La función devuelve 0.0 si la marca de tiempo corresponde al futuro.
Escenario: para considerar la antigüedad del documento con base en el campo
create_timestamp, use la expresión:timeliness(create_timestamp).-
Notas:
El campo
pubtimedebe estar configurado como un campo de atributo.
timeliness_ms: cálculo de una puntuación de actualidad
Sintaxis: timeliness_ms(pubtime)
Parámetro:
pubtime: el campo que se va a evaluar. Debe ser un número entero que represente una marca de tiempo Unix en milisegundos.Valor de retorno: un valor flotante en el rango [0.0, 1.0]. Un valor más alto indica un documento más reciente. La función devuelve 0.0 si la marca de tiempo corresponde al futuro.
Escenario: para considerar la antigüedad del documento con base en el campo
create_timestamp, use la expresión:timeliness_ms(create_timestamp).-
Notas:
El campo
pubtimedebe estar configurado como un campo de atributo.
normalize: normalización de un valor numérico
Descripción general: en los cálculos de relevancia, la calidad de un documento se mide en distintas dimensiones. Las puntuaciones de estas dimensiones suelen tener rangos muy diferentes. Por ejemplo, el conteo de clics de un documento podría alcanzar millones, mientras que su puntuación de relevancia de texto oscila entre 0.0 y 1.0. Estos valores no son comparables de forma directa. Para combinarlos en una fórmula, primero debe normalizarlos a una escala común. La función
normalizeofrece una manera sencilla de lograrlo. Admite tres métodos y selecciona uno automáticamente según los parámetros proporcionados: normalización por arcotangente (solo con el parámetrovalue), normalización logarítmica (convalueymax) y normalización lineal (convalue,maxymin).Sintaxis: normalize(value, max, min)
Parámetros:
Valor de retorno: un valor doble en el rango [0.0, 1.0].
-
Escenario 1: para normalizar el campo
pricecuando se desconoce su rango de valores, use:normalize(price).Escenario 2: para normalizar el campo
pricecuando solo se conoce su valor máximo (por ejemplo, 100), use:normalize(price, 100).Escenario 3: para normalizar el campo
pricecuando se conocen tanto su valor máximo (100) como el mínimo (1), use:normalize(price, 100, 1).Escenario 4: para normalizar el resultado de la función
distanceal rango [0.0, 1.0], use:normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query)). -
Notas:
Los campos utilizados como parámetros deben estar configurados como campos de atributo.
En la normalización por arcotangente, si
valuees menor que 0, la función devuelve 0.0.En la normalización logarítmica, el valor de
maxdebe ser mayor que 1.0.En la normalización lineal, el valor de
maxdebe ser mayor que el valor demin.
category_score: función de predicción de categorías
Descripción: esta función devuelve una puntuación que indica qué tan bien coincide la categoría de un documento con la categoría prevista de la consulta.
-
Sintaxis:
category_score(cate_id) -
Parámetro:
cate_id: el campo utilizado como identificador de categoría durante el entrenamiento del modelo. Debe ser un número entero. Valor de retorno: un número entero en el rango [0, 2].
Escenario: utilice
category_score(cate_id)en una expresión de ordenamiento. Para obtener más información, consulte Use the category prediction feature.-
Notas:
Esta función debe usarse junto con el algoritmo de predicción de categorías.