На практике использование обращения к CONTAINS в выражениях для формирования столбцов в предложении SELECT не всегда удобно и не способствует эффективности. Вынужденная в этом отношении мера - использование функции («оператора») SCORE, возвращающей тот же результат, что и CONTAINS, но которую можно повторять в запросе многократно без боязни замедлить вычисление. Однако поскольку операторов CONTAINS в запросе может встречаться несколько, придумана специальная техника числовых «меток», устанавливающих соответствие операторов SCORE и CONTAINS в рамках запроса SQL. Метки указываются как параметр операторов (еще одна вынужденная и не очень элегантная мера) и выбираются произвольно. Примеры этой техники:
CTX> SELECT SCORE ( 1 ), vc2doc 2 FROM docs 3 WHERE CONTAINS ( vc2doc, 'lamb', 1 ) > 0 4 ORDER BY SCORE ( 1 ) DESC 5 ;
SCORE(1) VC2DOC ---------- ------------------------------------------------ 7 This Lamb is my lamb 4 Mary had a little lamb
CTX> SELECT SCORE ( 1 ), SCORE ( 15 ), vc2doc 2 FROM docs 3 WHERE 4 CONTAINS ( vc2doc, 'lamb', 1 ) > 0 5 OR CONTAINS ( vc2doc, 'lamb AND mary', 15 ) > 0 6 ORDER BY 7 SCORE ( 15 ) DESC 8 ;
SCORE(1) SCORE(15) VC2DOC ---------- ---------- ---------------------------------- 4 4 Mary had a little lamb
7 0 This Lamb is my lamb