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 preliminardefault.
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 enexact_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_boosten 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:
pubtimees el campo que se va a evaluar. El campo debe ser de tipointy 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_timestampen una clasificación preliminar. Establezca la expresión entimeliness(create_timestamp).Notas de uso: Debe configurar el campo
pubtimecomo 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:
pubtimees el campo que se va a evaluar. El campo debe ser de tipointy 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_timestampen una clasificación preliminar. Establezca la expresión entimeliness_ms(create_timestamp).Notas de uso: Debe configurar el campo
pubtimecomo 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
normalizesimplifica 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ámetrovalue, utiliza el método de arcotangente. Si especificavalueymax, utiliza el método logarítmico. Si especificavalue,maxymin, utiliza el método lineal.Sintaxis:
normalize(value, max, min). Para obtener más información, consulte normalize.Parámetros:
valuees el valor que se va a normalizar, el cual debe ser de tipodouble. El valor puede provenir de un campo del documento o de otra expresión.maxes el valor máximo de entrada opcional, que debe ser de tipodouble.mines el valor mínimo de entrada opcional, que debe ser de tipodouble.Valor de retorno: Un valor
doubleen el rango de [0, 1].-
Casos de uso:
Escenario 1: Para normalizar el campo
pricesin conocer su rango de valores, utilice la siguiente expresión:normalize(price).Escenario 2: Para normalizar el campo
pricecuando solo sabe que su valor máximo es 100, utilice la siguiente expresión:normalize(price, 100).Escenario 3: Para normalizar el campo
pricecuando 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
distanceal 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
valuees menor que 0, el valor normalizado será 0.Al utilizar el método logarítmico para la normalización, el valor
maxdebe ser mayor que 1.Al utilizar el método lineal para la normalización, el valor
maxdebe ser mayor que el valormin.