Oracle Text russian morphology (русский язык в Oracle Text): наши опыты

А дело было так.
1) В результате построения ctxsys.context - индексов по большому объёму разнообразных текстовых документов (несколько миллионов web-страниц) с использованием AUTO_LEXER и russian stemming, из таблицы индекса DR#(INDEX_NAME)$I были получены все встретившиеся в текстах формы слов. Пока - в кириллице. Эти слова были сложены в таблицу, ну, скажем, WORDS_RU
2) Затем по таблице WORDS_RU был построен другой ctxsys.context - индекс, так же с использованием AUTO_LEXER и russian stemming. Была написана процедура, которая производила полнотекстовый поиск каждого слова их таблицы WORDS_RU по этому полнотекстовому индексу. Что позволило выявить нормальные формы для каждого слова. Слегка запутано, конечно...
3) Затем полученные слова в кириллице, и их нормальные формы (именительный падеж, ед.ч., наст. время и т.п.) были подвергнуты транслиту, и по ним был составлен пользовательский словарь форм (stemming user-dictionary) dren.dct, и положен в папку $ORACLE_HOME/ctx/data/enlx/ Этим словариком я готов делиться - пишите в личку.
Теперь - почти всё готово.
4) Для построения ctxsys.context - индексов используем procedure_filter или USER_DATASTORE, в которых реализуем транслит индексируемых текстов. При этом сами тексты - на русском, а в индексе - слова транслитом. Ах, да, транслит пришлось сделать на Java, т.к. использование чего-то нативного, типа TRANSLATE - работает на порядки медленнее.
BASIC_LEXER: 'index_stems' 'ENGLISH'
BASIC_WORDLIST: 'stemmer' 'ENGLISH', 'fuzzy_match' 'GENERIC', 'fuzzy_score' '70', 'fuzzy_numresults' '10'
Строим индекс, и получаем все работающие для English фичи.
5) При выполнении поиска, разумеется, в параметр contains запрос передаём после транслита.

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

Использование материалов сайта допускается только с активной ссылкой на источник.

Здесь нужно написать контактную информацию.

Мы в социальных сетях

© 2010 - 2018 D@nVitLabs