Clasificación y ordenación

SharePoint 2010

Aprenda a ordenar resultados de búsqueda para FAST Search Server 2010 for SharePoint.

Última modificación: jueves, 01 de septiembre de 2011

Hace referencia a: SharePoint Server 2010

En este artículo
Especificación del criterio de ordenación en una solicitud de consulta
Ordenar resultados de búsqueda por rango
Ordenar resultados de búsqueda por el valor de la propiedad administrada
Ordenar resultados de búsqueda por una expresión de fórmula
Ordenar resultados de búsqueda aleatoriamente

Puede especificar cómo desea ordenar los resultados de la consulta de FAST Search Server 2010 for SharePoint usando uno de los cuatro métodos siguientes:

  • Ordenar por rango Permite ordenar los resultados de la consulta por relevancia (rango).

  • Ordenar por propiedad administrada Permite ordenar los resultados de la consulta según el valor de una o varias propiedades administradas.

  • Ordenar por fórmula Permite ordenar los resultados de la consulta mediante una fórmula especificada en la solicitud de consulta.

  • Ordenar aleatoriamente  Permite ordenar los resultados de la consulta aleatoriamente o agregar un componente aleatorio a la ordenación.

Se aplica a: Microsoft FAST Search Server 2010 for SharePoint

Si usa el servicio web de consulta, especifique el criterio de ordenación usando el elemento Elemento SortByProperties del esquema Microsoft.Search.Query. Este elemento contiene uno o varios elementos SortByProperty, cada uno de los cuales representa un nivel en la especificación del criterio de ordenación.

Si usa el modelo de objetos de consulta, especifique los criterios de ordenación mediante la propiedad SortList de la clase KeywordQuery. Esta propiedad devuelve una colección de objetos Sort, cada uno de los cuales representa un nivel en la especificación del criterio de ordenación.

Si tiene varios niveles en la especificación del criterio de ordenación, la ordenación se realiza en la secuencia en la que aparece en la especificación del criterio de ordenación. Tras ordenar por el primer nivel, el siguiente nivel solo será relevante para los resultados que tengan el mismo valor para el criterio de ordenación especificado para el primer nivel.

Puede especificar una dirección de ordenación individual para cada nivel al especificar el criterio de ordenación.

El criterio de ordenación predeterminado es ordenar los resultados de la consulta por relevancia (rango). Esto significa que FAST Search Server 2010 for SharePoint coloca los resultados más relevantes en primer lugar en el conjunto de resultados de la consulta. Para obtener más información acerca de cómo ajustar la clasificación por relevancia, vea Mejora de la relevancia en FAST Search Server 2010 para SharePoint.

Si desea usar un perfil de jerarquía diferente del perfil de jerarquía predeterminado, puede especificar su nombre en la especificación de orden.

Si ordena por rango, los resultados siempre se ordenarán en orden descendente.

Además de usar un perfil de jerarquía, puede influir en el cálculo de clasificación en la consulta. Puede hacerlo de dos maneras, como se muestra a continuación.

Puede especificar la ordenación de los resultados de la consulta según el valor de una o varias propiedades administradas en los resultados de la consulta. Esto significa que FAST Search Server 2010 for SharePoint lleva a cabo la ordenación teniendo en cuenta los resultados que coinciden con la consulta.

Puede ordenar los resultados en función de propiedades de texto y numéricas. En el caso de propiedades de texto, la ordenación se basa en el método de ordenación por cadena de texto estándar. En el caso de propiedades numéricas (incluidas las propiedades administradas del tipo Datetime), la ordenación se basa en el valor numérico.

Puede especificar la ordenación de los resultados de una consulta mediante un criterio basado en una fórmula matemática que crea el valor de la ordenación.

La ordenación por fórmula es una extensión de la funcionalidad de ordenación de un solo nivel y de varios niveles de los resultados de una consulta. Esta característica permite especificar una fórmula, en vez de una propiedad administrada, como criterio de ordenación.

Mediante el uso de la característica de ordenación por fórmula se pueden aplicar operaciones matemáticas al valor de una o varias propiedades administradas para cada elemento de los resultados de la consulta.

Los siguientes son ejemplos de características que se pueden implementar mediante el uso de esta característica:

  • Algoritmo de K vecinos más próximos para clasificar los documentos.

  • Distancia euclidiana o distancia de Manhattan para calcular distancias geográficas.

  • Valor preferido, por ejemplo, para ordenar los documentos en función de cuánto se aleja el valor de una propiedad administrada determinada del valor preferido.

Esta característica no incluye el control de parámetros de clasificación dinámicos estadísticos, como la frecuencia del término y la proximidad.

La fórmula se evalúa de izquierda a derecha y usa la precedencia de los operadores matemáticos estándar. Es decir, primero se evalúan las funciones y los grupos entre paréntesis, después las operaciones de multiplicación y división y, por último, las operaciones de suma y resta.

Nota importante Importante

El resultado final de una fórmula debe estar en el rango de valores de un entero con signo de 32 bits. De lo contrario, es posible que la ordenación no sea correcta.

Especificación de la fórmula de ordenación en una consulta

En la especificación del criterio de ordenación de la solicitud de consulta se especifica una fórmula de ordenación en vez de una propiedad administrada.

La especificación de orden tiene el formato siguiente:

[formula:<sort-formula>]

En el formato, <fórmula-ordenación> es la expresión de fórmula de ordenación.

Nota Nota

Los corchetes forman parte de la sintaxis de la especificación de orden.

La dirección de ordenación predeterminada es Descending. También se puede usar una fórmula que ordene los valores en forma ascendente, por ejemplo, si especifica una distancia geográfica.

A continuación se ofrece un ejemplo que muestra cómo especificar una ordenación por fórmula con criterio de ordenación ascendente mediante el elemento SortByProperties.

<SortByProperties>
  <SortByProperty name="[formula:abs(2000-size)]" direction="Ascending" /> 
</SortByProperties>

Para obtener más información sobre cómo agregar la especificación de orden a una consulta, vea Especificación del criterio de ordenación en una solicitud de consulta.

Uso de propiedades administradas en la fórmula.

Puede aplicar una fórmula de ordenación sobre el valor de propiedades administradas del tipo IntegerDecimal y Datetime. Debe habilitar la ordenación para la propiedad administrada especificada en el esquema de índice.

En el caso de propiedades administradas del tipo Decimal, el valor se multiplica por 10 ^(dígitos decimales) antes de usarlo en la evaluación de la fórmula.

En el caso de propiedades administradas del tipo Datetime, el valor se convierte al número de centésimas de nanosegundo desde el 1 de enero de 29000 a.C. antes de usarlo en la evaluación de la fórmula. El año tiene 366 días.

Expresión de fórmulas de ordenación

En la tabla 1 se enumeran las funciones que se pueden usar en la expresión de fórmulas de ordenación. La expresión no debe contener espacios.

Tabla 1. Funciones para las expresiones de fórmulas de ordenación

Función

Descripción

+

Especifica suma.

-

Especifica resta.

*

Especifica multiplicación.

/

Especifica división.

Nota Nota

De manera predeterminada, una división por cero da como resultado una excepción y la consulta devuelve un error. Al usar el operador errtolast, se puede evitar el error de consulta y colocar los elementos con errores al final del conjunto de resultados.

rank

Una palabra clave especial que representa el rango dinámico de un elemento.

Ejemplo: abs(rank-100) usará la distancia respecto del valor de rango 100 como criterio de ordenación.

[0-9.]+

Especifica que los números se pueden expresar como enteros o valores dobles.

Ejemplos: 503, 3.14, 5.4352262

[a-z0-9]+

Especifica que cualquier secuencia de caracteres que no se reconozca como un nombre de función se trate como un nombre de propiedad administrada. Debe habilitar la ordenación de la propiedad administrada especificada en el Esquema de índice (FAST Search Server for SharePoint).

Ejemplo: puede definir una propiedad administrada denominada height con ordenación habilitada. Esto permite usar "alto" como una expresión en la fórmula. La fórmula usa el valor de la propiedad administrada height.

( and )

Se usa para agrupar cálculos para garantizar la precedencia correcta.

Ejemplo: 4*(3+2)

sqrt(n)

La raíz cuadrada de n.

exp(n)

La función exponencial equivalente a pow(2.71828182846,n).

log(n)

El logaritmo natural de n.

abs(n)

El valor absoluto de n.

ceil(n)

El límite máximo de n. Es decir, si n no es un número entero, redondear hacia arriba al número entero siguiente. Si n es un número entero, usar n.

floor(n)

El límite mínimo de n. Es decir, si n no es un número entero, redondear hacia abajo al número entero siguiente. Si n es un número entero, usar n.

round(n)

El redondeo de n al número par entero más próximo. También conocido como "redondeo bancario" o "redondeo al par más próximo".

sin(n)

El seno de n radianes.

cos(n)

El coseno de n radianes.

tan(n)

La tangente de n radianes.

asin(n)

El arcoseno, en radianes, de n.

acos(n)

El arcocoseno, en radianes, de n.

atan(n)

El arcotangente, en radianes, de n.

pow(x,y)

El valor de x elevado a la potencia y.

atan2(y,x)

Un arcotangente de dos argumentos del ángulo en radianes entre el eje x positivo y la coordenada cartesiana especificada (x, y).

bucket(b,n1,n2,…)

Operador que se puede usar para proporcionar valores discretos para rangos de distribución de valor determinados de una expresión.

La expresión b puede ser una propiedad administrada o cualquier otra expresión de fórmula. Los argumentos n1, n2, … representan umbrales numéricos. Puede especificar un número arbitrario de umbrales de cubo.

Un valor dado para la expresión de entrada b se redondea hacia abajo al umbral numérico más próximo. Si es menor que el umbral mínimo dado, el valor resultante es cero.

errtolast(x)

Operador que se puede usar para controlar las excepciones de fórmulas; x puede ser cualquier expresión de fórmula. Si el cálculo de la expresión de esta fórmula da lugar a una excepción matemática para un elemento del conjunto de resultados, como la división por cero, estos elementos aparecen al final de la lista, independientemente de la dirección de ordenación especificada.

Características de rendimiento para ordenar por fórmula

El uso de una fórmula de ordenación implica que los cálculos de la fórmula se aplican a todos los elementos coincidentes en el conjunto de resultados. Esto significa que el impacto del rendimiento de la consulta depende del número de elementos que coincidan con la consulta.

Las fórmulas largas con muchos operadores requieren más tiempo de procesamiento que las fórmulas cortas.

Uso del criterio de ordenación por fórmula para distancia geográfica

Puede usar el criterio de ordenación por fórmula para aplicar una clasificación basada en la distancia. Para ello, deberá incluir propiedades administradas que representen la latitud y longitud de cada elemento.

Por ejemplo, puede usar una de las siguientes fórmulas estándar:

  • Distancia de Manhattan.

  • Distancia euclidiana. Vea el ejemplo 2.

  • Fórmula de Haversine.

Nota importante Importante

Debe usar propiedades administradas del tipo de entero para los valores de latitud y longitud. En el lado del contenido, puede convertir los valores de latitud y longitud en valores enteros en un componente de extensibilidad de canalización externo. En el lado de la consulta, puede realizar la misma conversión en el cliente de consulta.

Ejemplos

En los ejemplos siguientes se muestra cómo especificar la fórmula de ordenación en una solicitud del servicio web de consulta.

Ejemplo 1. Colocar los elementos que tienen la propiedad administrada height más cercana al 20 en la parte superior de la lista de resultados.

<SortByProperties>
  <SortByProperty name="[formula:abs(20-height)]" direction="Ascending" />
</SortByProperties>

Ejemplo 2. Ordenar por distancia euclidiana 3-D verdadera desde una posición base determinada (por ejemplo, la posición del usuario), en función de la información de posición que se proporciona en las propiedades administradas latitude, longitude y height. La siguiente fórmula proporciona la distancia euclidiana 3-D, teniendo en cuenta que la posición base es 50/100/200 (latitud/longitud/altura):

sqrt(pow(50-latitude,2)+pow(100-longitude,2)+pow(200-height,2))

Si desea aplicar una ordenación de resultados basada en la distancia (sin combinar la distancia con otros parámetros de una fórmula), puede quitar el componente sqrt(), ya que este no modifica la secuencia de ordenación. Esto mejora el rendimiento de la consulta.

<SortByProperties>
  <SortByProperty name="[formula:pow(50-latitude,2)+pow(100-longitude,2)+pow(200-height,2)]"
                  direction="Ascending" />
</SortByProperties>

Ejemplo 3. Redondear los valores de size en cubos, redondeándolos hacia abajo a uno de estos valores: 0, 5, 15, 50, 100. Ordenar los valores más grandes en primer lugar.

<SortByProperties>
  <SortByProperty name="[formula:bucket(size,5,15,50,100)]" direction="Ascending" />
</SortByProperties>

Uso de la ordenación por fórmula en el servicio web de consulta

Siga los pasos descritos en Tutorial: Consultas a FAST Search Server desde una aplicación cliente y extienda el código para agregar una especificación de ordenación por fórmula como se describe anteriormente en el ejemplo 1.

Reemplace la definición de la cadena queryXML2 para agregar una especificación de ordenación por fórmula a la consulta.

   // queryXML2 is the part of the XML after the query string.
   string queryXML2 = @"
         </QueryText>
      </Context>
      <ResultProvider>FASTSearch</ResultProvider>
      <Range>
         <Count>10</Count>
      </Range>
      <SortByProperties>
         <SortByProperty name='[formula:abs(20-height)]' direction='Ascending' />
      </SortByProperties>
   </Query>
</QueryPacket>";

Puede aplicar una ordenación aleatoria a los resultados de la consulta o agregar un componente aleatorio a la ordenación de los resultados.

La especificación de orden aleatorio tiene el formato siguiente:

[random:seed=<seed>:hashfield=<managed property>:addtorankmax=<max random value>]

Nota Nota

Los corchetes forman parte de la sintaxis de la especificación de orden.

La Tabla 2 explica los parámetros para la especificación del criterio de ordenación aleatoria.

Tabla 2. Parámetros para la especificación del criterio de ordenación aleatoria

Parámetro

Descripción

Requerido

seed

El valor de inicialización para la generación del valor aleatorio.

El valor de inicialización se introduce en una función que genera un número aleatorio. Este número aleatorio se usa en la ordenación final.

Al usar únicamente la opción seed, obtendrá un conjunto de resultados de consulta ordenado aleatoriamente. La ordenación de la misma consulta (cuando se usa el mismo valor de inicialización) puede cambiar tras una actualización de índice.

hashfield

Una propiedad administrada que se usa como valor hash para la generación aleatoria.

Puede usar este parámetro para garantizar que la ordenación de la misma consulta (cuando se usa el mismo valor de inicialización) no cambie tras una actualización de índice.

La propiedad administrada debe ser de tipo entero y debe tener habilitada la ordenación en el esquema de índice.

Puede especificar valores únicos o aleatorios para esta propiedad administrada (por ejemplo, especificar una etapa de procesamiento de elementos para una secuencia numérica).

No

addtorankmax

Use este parámetro si desea aplicar una selección aleatoria limitada de los resultados de búsqueda, de forma que los resultados de búsqueda sigan ordenados principalmente por rango.

Se agregará un valor aleatorio entre 0 (cero) y el valor especificado para este parámetro al valor de rango de cada elemento del conjunto de resultados. De este modo, es posible aplicar un orden aleatorio a los resultados que se encuentran en un intervalo.

Nota Nota

Se trata del valor de rango original (antes de la ordenación) que se proporciona con los resultados de la consulta, no el rango que incluye el valor aleatorio.

No

Al proporcionar el mismo valor de inicialización para consultas iguales, los elementos se mostrarán en el mismo orden. De este modo, puede conservar el mismo orden aleatorio al recorrer las páginas de los resultados de búsqueda. Use el parámetro hashfield si desea preservar el mismo orden aleatorio cuando se produzca por error una actualización de índice entre las consultas.

Ejemplos

Los siguientes ejemplos muestran cómo especificar la ordenación aleatoria en una solicitud de servicio web de consulta.

Ejemplo 1. Ordenación aleatoria de todo el conjunto de resultados.

<SortByProperties>
  <SortByProperty name="[random:seed=5432]" />
</SortByProperties>

Ejemplo 2. Ordenación aleatoria de todo el conjunto de resultados. Conserve la misma secuencia aleatoria para la misma consulta con el mismo valor de inicialización aunque se produzca un cambio de índice. Debe haber una propiedad administrada personalizada llamada hashvalue disponible en el esquema de índice que se debe rellenar con valores numéricos secuenciales o aleatorios para todos los elementos indizados.

<SortByProperties>
  <SortByProperty name="[random:seed=6543:hashfield=hashvalue]" />
</SortByProperties>

Ejemplo 3. Agregue un valor aleatorio entre 0 y 200 al valor de rango de cada elemento. De este modo, se volverá a ordenar el conjunto de resultados de manera limitada.

<SortByProperties>
  <SortByProperty name="[random:seed=1234:addtorankmax=200]" />
</SortByProperties>
Mostrar: