Приветствую, коллеги.
В официальной документации к Oracle Text 11
g 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), результат тот же.
Кто-нибудь сталкивался с подобной задачей? Удалось ли подключить русскую морфологию?