Una cláusula de ordenamiento controla el orden de los resultados de una consulta según uno o más campos. Si no se incluye esta cláusula, los resultados se ordenan de forma predeterminada en orden descendente por puntuación de relevancia (RANK).
Sintaxis
Una cláusula de ordenamiento sigue este formato:
+field1;-field2
+ordena por el campo en orden ascendente.-ordena por el campo en orden descendente.Separe varias reglas de ordenamiento con punto y coma (
;).Combine campos con operadores aritméticos (
+,-,*,/) para ordenar por un valor calculado. Los campos unidos por un operador deben compartir el mismo tipo de datos.Ordene por el campo
RANKpara organizar los resultados según la puntuación de relevancia, la cual se calcula mediante una expresión de ordenamiento.
Referencia rápida
|
Ejemplo |
Resultado |
|
|
Ascendente por |
|
|
Descendente por |
|
|
Descendente por la suma de |
|
|
Ascendente por |
|
|
Ascendente por distancia desde las coordenadas indicadas |
Ordenamiento multidimensional
Una cláusula de ordenamiento puede contener varias reglas separadas por punto y coma. Los resultados se ordenan primero por la regla inicial; si los valores son iguales, se aplica la siguiente regla, y así sucesivamente.
sort=-field1;-field2;-field3
El rendimiento del ordenamiento multidimensional depende de las características de los campos y no está garantizado. Para mejorar el rendimiento, utilice una expresión de ordenamiento fino que combine señales de varios campos en una sola puntuación numérica:
normalize(field1)*100+normalize(field2)*10+normalize(field3)+first_phase_score*10000
En este caso, first_phase_score es la puntuación calculada por la expresión de ordenamiento preliminar. Este enfoque ofrece un rendimiento de ordenamiento predecible y permite ajustar explícitamente los pesos de los campos. Para más detalles, consulte Fine sort functions.
Limitaciones
La cláusula de ordenamiento es opcional. Si no se especifica, los resultados se ordenan por
RANKen orden descendente. Si la cláusula no incluye el campoRANK, las expresiones de ordenamiento no surten efecto.Los campos en una cláusula de ordenamiento deben ser campos de atributo definidos en el esquema de la aplicación.
Las funciones de funcionalidad que devuelven valores INT o FLOAT pueden usarse como campos de ordenamiento.
Para campos LITERAL: las letras se ordenan alfabéticamente, los números se ordenan dígito por dígito en cada posición y los caracteres chinos se ordenan por valor ASCII.
Los campos ARRAY no son compatibles en la mayoría de los escenarios.
Funciones de funcionalidad compatibles
distance
Devuelve la distancia esférica entre dos puntos. Se usa comúnmente para ordenar resultados por proximidad en escenarios de servicios basados en ubicación (LBS).
Ejemplo: Ordene los resultados de búsqueda de restaurantes por distancia en orden ascendente.
query=default:'Restaurant name'&&sort=+distance(lon,lat,"120.34256","30.56982")
Para consultar la referencia completa de la función, consulte distance.
tag_match
Compara las cláusulas de consulta con los documentos mediante etiquetas y asigna una puntuación a los documentos según los pesos de las etiquetas coincidentes.
Ejemplo:
sort=-tag_match("user_options", options, "mul", "sum", "false", "true", 100)
Para consultar la referencia completa de la función, consulte tag_match.
Ejemplos
Ordenar por campo y luego por relevancia
Busque "Zhejiang University" y ordene los resultados por type en orden ascendente; los empates se resuelven por relevancia de texto en orden descendente.
query=default:'Zhejiang University'&&sort=+type;-RANK
La expresión de ordenamiento fino puede ser text_relevance(field). Para obtener detalles sobre la configuración de políticas de ordenamiento, consulte Configure sort policies.
Ordenar por valor de campo calculado
Busque "Zhejiang University" y ordene los resultados por el total combinado de hits y comments en orden descendente.
query=default:'Zhejiang University'&&sort=-(hits+comments)