Utilice la cláusula sort para ordenar los resultados de búsqueda en orden ascendente o descendente según uno o varios campos.
Descripción
La cláusula sort utiliza la siguiente sintaxis: +Field1;-Field2
El prefijo
+ordena los resultados por el campo en orden ascendente. El prefijo-los ordena en orden descendente.Los campos se pueden combinar mediante operadores aritméticos: suma (
+), resta (-), multiplicación (*) y división (/). Los campos conectados por un operador deben compartir el mismo tipo de datos.OpenSearch admite el ordenamiento multidimensional. Separe las distintas reglas de ordenamiento con punto y coma (
;). El sistema aplica las reglas en secuencia: primero ordena los resultados según la primera regla, luego desempata con la segunda y así sucesivamente hasta completar el ordenamiento.RANKes una regla especial que representa las puntuaciones de relevancia calculadas a partir de la expresión de ordenamiento especificada.
Notas de uso
La cláusula sort es opcional. Si se omite, se aplica el valor predeterminado
sort=-RANK, que ordena los resultados por puntuación de relevancia en orden descendente. Si incluye una cláusula sort pero omiteRANK, la expresión de ordenamiento configurada no surtirá efecto.Los campos utilizados en la cláusula sort deben ser campos de atributo definidos en el archivo schema.json.
Las funciones de funcionalidad que devuelven un valor INT o FLOAT se pueden usar como campos de ordenamiento.
Para los campos LITERAL, el orden es el siguiente: letras en orden alfabético, números en orden descendente y caracteres chinos según su valor ASCII.
En la mayoría de los casos, no son compatibles campos ARRAY en la cláusula sort.
Cuando la cláusula sort contiene varias reglas (por ejemplo,
sort=-field1;-field2;-field3), el rendimiento del ordenamiento depende de la distribución de datos de cada campo. Para garantizar un rendimiento estable, utiliceRANKjunto con una expresión de ordenamiento fino. Por ejemplo:normalize(field1)100+normalize(field2)10+normalize(field3)+first_phase_score*10000, dondefirst_phase_scorecorresponde a la puntuación de la fase de ordenamiento preliminar. Para más detalles, consulte Fine sort functions.
Funciones de funcionalidad compatibles
distance: Devuelve la distancia esférica entre dos puntos. Se usa comúnmente para ordenar por distancia en 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")
tag_match: Compara las palabras clave de la consulta con las etiquetas del documento y asigna una puntuación según los pesos de las etiquetas coincidentes. Para más detalles, consulte el enlace anterior.
Ejemplo:
sort=-tag_match("user_options", options, "mul", "sum", "false", "true", 100).
Ejemplo
-
Ordene los resultados de la consulta "Zhejiang University" por tipo en orden ascendente. Si dos documentos tienen el mismo tipo, desempate según la relevancia del texto. Para obtener detalles sobre cómo configurar el desempate basado en RANK, consulte Configure sort expressions.
query=default:'Zhejiang University'&&sort=+type;-RANK // The fine sort expression can contain text_relevance(field). -
Ordene los resultados de la consulta "Zhejiang University" por la puntuación combinada de visitas y comentarios en orden descendente:
query=default:'Zhejiang University'&&sort=-(hits+comments)