artymail
@artymail

Как использовать русскую морфологию в Oracle Text (в СУБД 11g R2)?

Приветствую, коллеги.

В официальной документации к Oracle Text 11g Release 2 (11.2) (ссылка) сказано о том, что русская морфология поддерживается на уровне словооснов (stemmer). Попробовал это на практике:

Таблица:
select * from docs;
 
        ID TEXT
---------- --------------------
         1 читать
         2 читаю
         3 читал
         4 чтение
         5 sing
         6 sang
         7 singing
         8 sung


Создаем лексер:
exec ctx_ddl.create_preference('MYLEXER', 'world_lexer');


Создаем индекс:
create index i_docs on docs (text) indextype is ctxsys.context
   parameters ('LEXER MYLEXER stoplist CTXSYS.EMPTY_STOPLIST');


Далее запрос на английский текст выдает правильный результат (4 записи):
SELECT SCORE ( 1 ), text
  FROM docs
  WHERE CONTAINS (text, '$sing', 1 ) > 0
  ORDER BY SCORE ( 1 ) DESC;


А запрос на русский текст выдает только одну запись:
SELECT SCORE ( 1 ), text
  FROM docs
  WHERE CONTAINS (text, '$читать', 1 ) > 0
  ORDER BY SCORE ( 1 ) DESC;


На форуме sql.ru прочитал, что возможно виновата исходная кодировка самого инстанса. Мои параметры:
NLS_CHARACTERSET     CL8ISO8859P5
NLS_NCHAR_CHARACTERSET    AL16UTF16


Пробовал на 12-й версии СУБД (на UTF8 в 12.1.0.2), результат тот же.

Кто-нибудь сталкивался с подобной задачей? Удалось ли подключить русскую морфологию?
  • Вопрос задан
  • 810 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы