Предложение RANK BY
Результаты запроса включают как строки, возвращаемые запросом, так и значение ранга для каждой строки, если столбец ранжирования включен в предложение SELECT. Значения ранжирования вычисляются поисковой системой и возвращаются в виде целых чисел в диапазоне от нуля до 1000. Чтобы сделать результаты ранжирования более значимыми, запрос может управлять вычислением необработанных значений ранжирования в предложении RANK BY.
Этот раздел организован следующим образом:
Предложение RANK BY
Синтаксис предложения RANK BY выглядит следующим образом:
WHERE ( <search_condition> )
RANK BY [ ( ] <rank_specification> [ ) ]
Предложение RANK BY применяется к search_condition непосредственно перед ним, эффективно указывая более низкий или более высокий ранг для строк, возвращаемых этим условием поиска, чем строки, возвращаемые другим условием поиска. Круглые скобки, окружающие search_condition, необходимы. Круглые скобки, окружающие спецификацию ранжирования, являются необязательными.
К одному условию может применяться несколько предложений RANK BY. Вы можете включить дополнительные предложения RANK BY один после другого с помощью круглых скобок.
Заметка
Полнотекстовые предикаты возвращают значения ранжирования в диапазоне от 0 до 1000. Значения ранжирования для всех документов, сопоставленных предикатом без полнотекстового текста, имеют значение 1000. Изменения значений ранжирования должны учитывать эти сведения.
Rank_specification часть предложения RANKBY определяет одну или несколько функций, применяемых к значениям ранга. Функция WEIGHT применяет умножение к значению необработанного ранга для возвращаемой строки. Чем меньше умножение, тем ниже результирующее значение ранга. Функцию COERCION можно использовать для умножения, добавления или задания определенного значения ранжирования для возвращаемой строки. Каждая спецификация ранжирования может включать либо ноль, либо одну функцию WEIGHT, а также нулю или несколько функций COERCION. Если функции WEIGHT и COERCION включены в предложение RANK BY, функция WEIGHT должна быть первой.
Функция WEIGHT
Синтаксис функции WEIGHT:
WEIGHT ( <weight_multipler> )
Умножение должно быть десятичным от 0,001 до 1,000. Необработанное значение ранга, возвращаемое предикатом условия поиска, умножается на умножение веса, чтобы задать новое значение ранжирования.
В следующем примере функция WEIGHT предоставляет документы с словом "Тереса" в поле System.Document.LastAuthor половина значения ранга документов с "Тереса" в поле System.Author:
WHERE CONTAINS ( System.Author,'"Theresa"' )
RANK BY WEIGHT ( 1.000 )
OR
CONTAINS ( System.Document.LastAuthor,'"Theresa"' )
RANK BY WEIGHT ( 0.500 )
Заметка
Функции весовых значений столбцов CONTAINS и FREETEXT поддерживают сокращенный формат с помощью двоеточия между термином поиска и умножением ("software":0.25). Предложение RANK BY не поддерживает сокращенную форму.
Существует ограничение при использовании RANK BY WEIGHT: оно не работает с предложениями CONTAINS, использующими логические условия; Например, в следующем примере запрещено:
CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )
Функция COERCION
Функцию приведения рангов можно использовать для изменения возвращаемого значения ранжирования путем добавления или умножения или присвоения ему определенного значения.
Синтаксис функции COERCION:
COERCION ( <coercion_operation> , <coercion_value> )
Значение приведения — целочисленное значение.
В следующей таблице описаны доступные параметры операции приведения.
Операция приведения | Описание | Диапазон значений |
---|---|---|
АБСОЛЮТНЫЙ | Возвращаемое значение ранга — это значение, указанное в значении приведения. | От 0 до 1000 |
ДОБАВЛЯТЬ | Возвращаемое значение ранжирования — это сумма необработанного значения ранжирования и указанное значение приведения. | От 0.001 до 1.0 |
УМНОЖАТЬ | Возвращаемое значение ранжирования — это продукт необработанного значения ранжирования и указанного значения приведения. | От 0.001 до 1.0 |
Важный
Поиск может возвращать значения ранжирования только в диапазоне от 0 до 1000.
В следующем примере функция COERCION используется для задания всех документов с "компьютером" в заголовке, чтобы иметь ранг 1000, уменьшая на один квартал ранг документов, содержащих как компьютер", так и "программное обеспечение" в заголовке.
WHERE CONTAINS ( System.Title, 'computer' )
RANK BY COERCION ( ABSOLUTE , 1000 )
OR
CONTAINS ( System.Title, '"computer" AND "software"' )
RANK BY COERCION ( MULTIPLY, 0.750 )