Шаблон перезаписи текстового запроса Oracle не работает

Почему два последних правила перезаписи в примере из документации Oracle не работают?

Источник http://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#i1007557

Приложения запросов иногда анализируют запросы конечных пользователей, интерпретируя строку запроса одним или несколькими способами с использованием различных комбинаций операторов. Например, если пользователь вводит запрос ореха кукуй, ваше приложение может ввести запросы {орех кукуй} и {кусок или орех}, чтобы увеличить отзыв.

Функция перезаписи запроса позволяет отправить один запрос, который расширяет исходный запрос до переписанных версий. Результаты возвращаются без дублирования.

Вы указываете свои последовательности перезаписи с помощью функции шаблона запроса. Переписанные версии запроса эффективно выполняются с помощью одного вызова CONTAINS или CATSEARCH.

Следующий шаблон определяет последовательность перезаписи запроса. Запрос {kukui nut} переписывается следующим образом:

{кукуй} {орех}

{кукуи} ; {орех}

{кукуй} И {орех}

{кукуй} АККУМ {орех}

Шаблон перезаписи запроса для этих преобразований выглядит следующим образом:

select id from docs where CONTAINS (text,
 '<query>
   <textquery lang="ENGLISH" grammar="CONTEXT"> kukui nut
     <progression>
       <seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq>
       <seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite></seq>
       <seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></seq>
       <seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite></seq>
     </progression>
   </textquery>
  <score datatype="INTEGER" algorithm="COUNT"/>
</query>')>0;

person Tomasz    schedule 13.02.2013    source источник


Ответы (1)


В примере, предоставленном Oracle, есть ошибка. Важно, чтобы операторы запросов были разделены пробелами:

<seq><rewrite>transform((TOKENS, "{", "}", " AND "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ACCUM "))</rewrite></seq>

поэтому «И» и «АККУМ» вместо «И» и «АККУМ», как в документации.

person Tomasz    schedule 13.02.2013