Cláusula RANK BY

Os resultados de uma consulta incluem as linhas retornadas pela consulta e um valor de classificação para cada linha se a coluna de classificação estiver incluída na cláusula SELECT. Os valores de classificação são calculados pelo mecanismo de pesquisa e são retornados como inteiros no intervalo de zero a 1000. Para tornar os resultados da classificação mais significativos, a consulta pode controlar como os valores brutos de classificação são calculados na cláusula RANK BY.

Este tópico é organizado da seguinte maneira:

Cláusula RANK BY

A sintaxe da cláusula RANK BY é a seguinte:

WHERE ( <search_condition> ) 
RANK BY [ ( ] <rank_specification> [ ) ]

A cláusula RANK BY é aplicada ao search_condition imediatamente anterior, especificando efetivamente uma classificação inferior ou superior para linhas retornadas por essa condição de pesquisa do que as linhas retornadas por outra condição de pesquisa. Os parênteses ao redor da search_condition são necessários. Os parênteses em torno da especificação de classificação são opcionais.

Mais de uma cláusula RANK BY pode ser aplicada a uma única condição. Você pode incluir cláusulas RANK BY adicionais uma após a outra usando parênteses.

Observação

Predicados de texto completo retornam valores de classificação no intervalo de 0 a 1000. Os valores de classificação para todos os documentos correspondentes a um predicado de texto não completo são 1000. As modificações nos valores de classificação devem levar essas informações em conta.

 

A parte rank_specification da cláusula RANKBY identifica uma ou mais funções a serem aplicadas aos valores de classificação. A função WEIGHT aplica um multiplicador ao valor de classificação bruto para uma linha retornada. Quanto menor o multiplicador, menor o valor de classificação resultante. A função COERCION pode ser usada para multiplicar, adicionar ou definir um valor de classificação específico para uma linha retornada. Cada especificação de classificação pode incluir zero ou uma função WEIGHT e zero ou mais funções COERCION. Se as funções WEIGHT e COERCION forem incluídas em uma cláusula RANK BY, a função WEIGHT deverá ser a primeira.

Função WEIGHT

A sintaxe da função WEIGHT é:

WEIGHT ( <weight_multipler> ) 

O multiplicador deve ser um decimal de 0,001 a 1.000. O valor bruto de classificação retornado pelo predicado de condição de pesquisa é multiplicado pelo multiplicador de peso para definir um novo valor de classificação.

No exemplo a seguir, a função WEIGHT fornece documentos com a palavra "Theresa" no campo System.Document.LastAuthor metade do valor de classificação de documentos com "Theresa" no campo System.Author:

WHERE CONTAINS ( System.Author,'"Theresa"' ) 
         RANK BY WEIGHT ( 1.000 )
      OR
      CONTAINS ( System.Document.LastAuthor,'"Theresa"' ) 
         RANK BY WEIGHT ( 0.500 ) 

 

Observação

Os recursos de ponderação da coluna CONTAINS e FREETEXT dão suporte a um formato abreviado usando dois-pontos entre o termo de pesquisa e o multiplicador ("software":0.25). A cláusula RANK BY não dá suporte ao formulário abreviado.

 

Há uma limitação ao usar RANK BY WEIGHT: ele não funciona com cláusulas CONTAINS que usam condições boolianas; por exemplo, o exemplo a seguir não é permitido:

CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )

Função COERCION

A função de coerção de classificação pode ser usada para alterar o valor de classificação retornado por adição ou multiplicação ou atribuindo-lhe um valor específico.

A sintaxe da função COERCION é:

COERCION ( <coercion_operation> , <coercion_value> )

O valor de coerção é um valor inteiro.

A tabela a seguir descreve as configurações de operação de coerção disponíveis.

Operação de coerção Descrição Intervalo de valor
ABSOLUTE O valor de classificação retornado é o valor especificado no valor de coerção. 0 a 1000
ADD O valor de classificação retornado é a soma do valor de classificação bruta e o valor de coerção especificado. 0.001 a 1.0
MULTIPLY O valor de classificação retornado é o produto do valor bruto de classificação e o valor de coerção especificado. 0.001 a 1.0

 

 

Importante

A pesquisa pode retornar valores de classificação somente no intervalo de 0 a 1000.

 

 

O exemplo a seguir usa a função COERCION para definir todos os documentos com "computador" no título para ter uma classificação de 1000, enquanto reduz em um quarto a classificação de documentos que contêm "computador" e "software" no título.

WHERE CONTAINS ( System.Title, 'computer' )
        RANK BY COERCION ( ABSOLUTE , 1000 )
        OR 
       CONTAINS ( System.Title, '"computer" AND "software"' )
        RANK BY COERCION ( MULTIPLY, 0.750 )