Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
- de função weight de
- de função COERCION
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.
Nota
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 uma decimal de 0,001 a 1.000. O valor de classificação bruto retornado pelo predicado da 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 )
Nota
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: ela 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 valores |
|---|---|---|
| ABSOLUTO | O valor de classificação retornado é o valor especificado no valor de coerção. | 0 a 1000 |
| ADICIONAR | O valor de classificação retornado é a soma do valor de classificação bruto e o valor de coerção especificado. | 0 a 1000 |
| MULTIPLICAR | O valor de classificação retornado é o produto do valor de classificação bruto e do valor de coerção especificado. | 0 a 1000 |
| MINMAX | O valor de classificação retornado é o mapeamento linear da pontuação de classificação 0-1000 do item correspondente de CONTAINS ou CONTAINSSEMANTIC entre os valores de coerção mínimo e máximo especificados. | 0 a 1000 |
Importante
A pesquisa pode retornar valores de classificação apenas 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, reduzindo 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 )
O exemplo a seguir usa a função COERCION para mapear a classificação bruta de documentos com o termo "computador" para um intervalo entre 500 e 800 com base em suas correspondências semânticas.
WHERE CONTAINSSEMANTIC('text', *, 'computer', 1033)
OR CONTAINSSEMANTIC('image', *, 'computer', 1033)
RANK BY COERCION(MINMAX, 500, 800)
ORDER BY System.Search.Rank DESC
Merge(<merge_operation>)
Usado com a cláusula RANK BY para agregar as classificações de todos os resultados para gerar uma lista final classificada de resultados de mesclagem.
A sintaxe da função MERGE é a seguinte:
RANK BY MERGE ( <merge_operation>)
Operações de mesclagem
A tabela a seguir descreve as operações com suporte para o parâmetro merge_operation .
| Operação de mesclagem | Descrição |
|---|---|
| CONVEXCOMBINATION | Esse algoritmo de mesclagem deve ser usado exclusivamente quando a consulta incluir as seguintes cláusulas: CONTAINS (pesquisa lexical), CONTAINSSEMANTIC('Text',...) e CONTAINSSEMANTIC('Image'...) (pesquisa semântica entre texto e imagens). Ele combina pontuações dessas três cláusulas usando uma abordagem de soma ponderada, dando maior prioridade às pontuações léxicos, atribuindo-lhes pesos maiores quando comparados a pontuações semânticas. A classificação final será entre 0 e 1000. |
| MIN | Esse algoritmo de mesclagem é o comportamento padrão no caso de um cursor AND. Ele seleciona a classificação mínima de todos os resultados. |
| MAX | Esse algoritmo de mesclagem é o comportamento padrão no caso de um cursor OR. Ele seleciona a classificação máxima de todos os resultados. |
Nota
Usar RANK BY MERGE(MIN) com um cursor OR ou RANK BY MERGE(MAX) com um cursor AND não produzirá os resultados esperados. É recomendável usar explicitamente a função MERGE com a cláusula RANK BY somente em conjunto com o operador CONVEXCOMBINATION ao mesclar resultados de pesquisa léxico e semântica em um único conjunto de resultados.
Example
O exemplo a seguir demonstra o uso da função MERGE para pesquisar itens lexicamente e semanticamente correspondentes com a palavra "computador" nos campos "Imagem" ou "Texto". Os resultados da pesquisa são classificados usando o operador RANK BY MERGE, que agrega pontuações de todos os resultados para gerar uma lista de classificação final.
WHERE (CONTAINS(*,'computer', 1033)
OR CONTAINSSEMANTIC('Image', *, 'computer', 1033)
OR CONTAINSSEMANTIC('Text', System.ItemNameDisplay, 'computer', 1033)
OR CONTAINSSEMANTIC('Text', *, 'computer', 1033))
RANK BY MERGE(CONVEXCOMBINATION)
Para obter mais informações sobre o predicado CONTAINSSEMANTIC, consulte o predicado CONTAINSSEMANTIC.