функция SCORE
Функция SCORE выполняет поиск по индексу текстового поиска при помощи критериев, заданных вами в аргументе поиска, и возвращает оценку релевантности, показывающую степень соответствия документа запросу по сравнению с другими документами в столбце.
Синтаксис функции
Схема - SYSIBM.Параметры функций
- имя-столбца
- Специфицированное или неспецифицированное имя столбца индекса текстового поиска, в котором будет выполняться поиск. Этот столбец должен существовать в таблице или производной таблице, указанной в операторе в условии FROM, а со столбцом таблицы или базовой таблицы этой производной таблицы должен быть связан индекс текстового поиска (SQLSTATE 38H12). Базовое выражение столбца должно представлять собой простую ссылку на столбец базовой таблицы: либо непосредственную, либо через вложенную производную таблицу.
- аргумент-поиска
- Выражение, возвращающее строчное значение (кроме типа большого объекта), которое содержит поисковые термины; не может быть строкой из пробелов или пустой строкой (SQLSTATE 42815). Строчное значение - результат выражения не может содержать больше 4096 байт (SQLSTATE 42815). Это значение должно быть преобразовано в Unicode перед его использованием для поиска по индексу текстового поиска. Максимальное число терминов в одном запросе не может превышать 1024 (SQLSTATE 38H10).
- строчная-константа
Строчная константа, задающая опции аргумента поиска, которые действуют для этой функции.
В составе опций-аргумента-поиска можно задать следующие опции:
- QUERYLANGUAGE=локаль
- Задает локаль, которую механизм Db2 Text Search использует при выполнении текстового поиска в текстовом столбце Db2. Значение - любая поддерживаемая локаль. Если не задать QUERYLANGUAGE, значением по умолчанию будет локаль индекса текстового поиска. Если в индексе текстового поиска значение параметра LANGUAGE - AUTO, для QUERYLANGUAGE используется значение en_US.
- RESULTLIMIT=значение
Если оптимизатор выбирает план, при котором, чтобы получить оценку, механизм поиска вызывается для каждой строки набора результатов, то опция RESULTLIMIT на производительность не влияет. Если же механизм поиска вызывается один раз для всего набора результатов, то RESULTLIMIT действует как условие FETCH FIRST.
При использовании нескольких текстовых поисков, в которых RESULTLIMIT задается в одном и том же запросе, использовать один и тот же аргумент-поиска. Если вы используете разные значения аргумента-поиска, можно не получить ожидаемых результатов.
Для многораздельных текстовых индексов это предельное число результатов применяется к каждому разделу по отдельности.
Прим.: Если важно снизить число результатов, для этого лучше уточнить термины поиска, а не использовать RESULTLIMIT. RESULTLIMIT ограничивает число результатов независимо от их оценок, так что документы высокого ранга могут не попасть в набор результатов.- SYNONYM = OFF | ON
- Задает, следует ли использовать словарь синонимов, связанный с индексом текстового поиска. Значение по умолчанию - OFF. Чтобы использовать синонимы, добавьте словарь синонимов в индекс текстового поиска при помощи Инструментов синонимов.
- ОТКЛЮЧЕН
- Не использовать словарь синонимов
- ON
- Использовать словарь синонимов, связанный с индексом текстового поиска.
Результат выполнения этой функции - число с плавающей точкой двойной точности. Если второй аргумент допускает пустые значения, результат также допускает пустые значения; если второй аргумент пуст, результатом будет пустое значение. Если третий аргумент пуст, результат будет тем же, как и в случае, когда третий аргумент не задан.
Если столбец содержит совпадение с критериями, задаваемыми аргументом поиска, результатом будет значение от 0 до 1. Чем чаще встречалось соответствие, тем больше значение результата. Если столбец не содержит соответствий, результат - 0.
Функция SCORE - недетерминированная.
Пример
- Следующий запрос служит для генерирования списка сотрудников в порядке соответствия их резюме запросу "программист AND (java OR cobol)"
и нормализованного значения релевантности от 0 до 100:
SELECT EMPNO, INTEGER(SCORE(RESUME, 'программист AND (java OR cobol)') * 100) AS RELEVANCE FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii' AND CONTAINS(RESUME, 'программист AND (java OR cobol)') = 1 ORDER BY RELEVANCE DESC
Замечания по использованию
- Значение SCORE отражает относительную релевантность документа при сравнении со значением SCORE всех документов из того же собрания текстового индекса. Для многораздельной базы данных текстовый индекс может состоять из нескольких собраний, однако оценки документов не нормализуются по всем собраниям. Сравнение или сортировка значений SCORE для различных собраний текстовых индексов, таким образом, не является осмысленной и не дает правильной меры релевантности для документов в многораздельном текстовом индексе.
