Базы данных Oracle - статьи

         

Примеры запросов


Основой для запросов к документам по индексу типа CTXSYS.CONTEXT является «оператор» CONTAINS. По своему употреблению оператор Oracle SQL практически не отличается от функции. Оператор CONTAINS возвращает меру, иначе степень, соответствия документа текстовому запросу («relevance»).

Несколько поясняющих примеров. Подготовка:

SELECT CONTAINS ( vc2doc, '&1' ) AS score, vc2doc FROM docs . SAVE simplequestion REPLACE COLUMN vc2doc FORMAT A60 SET VERIFY OFF

Проверка:

CTX> @simplequestion 'star'

SCORE VC2DOC ---------- ------------------------------------------------------------ 0 Mary had a little lamb 4 Twinkle, twinkle little star

0 This Lamb is my lamb

CTX> @simplequestion 'little'

SCORE VC2DOC ---------- ------------------------------------------------------------ 4 Mary had a little lamb 4 Twinkle, twinkle little star 0 This Lamb is my lamb

CTX> @simplequestion 'twinkle'

SCORE VC2DOC ---------- ------------------------------------------------------------ 0 Mary had a little lamb 9 Twinkle, twinkle little star 0 This Lamb is my lamb

CTX> @simplequestion 'lamb'

SCORE VC2DOC ---------- ------------------------------------------------------------ 4 Mary had a little lamb

0 Twinkle, twinkle little star 7 This Lamb is my lamb

CTX> @simplequestion 'mary AND lamb'

SCORE VC2DOC ---------- ------------------------------------------------------------ 4 Mary had a little lamb

0 Twinkle, twinkle little star 0 This Lamb is my lamb

CTX> @simplequestion 'mary lamb'

SCORE VC2DOC ---------- ------------------------------------------------------------ 0 Mary had a little lamb

0 Twinkle, twinkle little star 0 This Lamb is my lamb

Обратите внимание, что степень соответствия документа запросу не является простой частотой употребления в документе слова. Она зависит также от общего количества запрашиваемых документов и от количества документов, где есть искомые словоформы. Ее вычисление в Oracle основано на . Результат, который дает формула, отображается на диапазон целых чисел между 0 и 100.

Следующие несколько примеров, выполненных самостоятельно, помогут пояснить поведение оператора CONTAINS и получить представление о некоторых дополнительных возможностях контекстного запроса:

@simplequestion 'MARY AND LAMB' @simplequestion 'MaRy AnD lAmB' @simplequestion '%le' @simplequestion 'lamb NOT mary' @simplequestion 'NEAR ((lamb, mary) ,3)' @simplequestion 'NEAR ((lamb, mary) ,2)' @simplequestion 'mary ACCUM lamb' @simplequestion 'mary ACCUM little' @simplequestion 'mary ACCUM little lamb' @simplequestion 'lamb OR little'

Полный перечень и описания реализованых операторов для составления контекстного запроса по документам (название «оператор» здесь неудачно совпадает с именованием «оператором» самой функции CONTAINS) имеется в документации по Oracle.



Содержание раздела