Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как искать текст нечувствительно к регистру с помощью Oracle text ?  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6281
Приветствую!

Есть большая таблица с CLOB полем (Oracle 9.2). Для поиска по содержимому решил воспользоваться oracle text.

Работаю на основе этой доки: https://oracle-base.com/articles/9i/full-text-indexing-using-oracle-text-9i

Создал индекс для таблицы:

CREATE INDEX X_SEARCH_IN_CLOB  ON  my_docs(my_clob_field) INDEXTYPE IS CTXSYS.CONTEXT;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'MY_DOCS', cascade=>TRUE);


Далее ищу текст

SELECT SCORE(1) score, id, name, my_clob_field
FROM   my_docs
WHERE  CONTAINS(my_clob_field, 'Hello', 1) > 0
ORDER BY SCORE(1) DESC;


Ищет обалденно быстро, НО! Чувствительно к регистру.
Вхождения "Hello" найдет, а "hello", например, нет.

Что посоветуете? Может индекс как то по-другому надо создать?
30 ноя 18, 12:30    [21749797]     Ответить | Цитировать Сообщить модератору
 Re: Как искать текст нечувствительно к регистру с помощью Oracle text ?  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6281
Нашел. Оказалось, что действительно дело в индексе.

DROP INDEX X_SEARCH_IN_CLOB



exec ctx_ddl.create_preference('german_lexer','basic_lexer');
exec ctx_ddl.set_attribute('german_lexer','composite','german');
exec ctx_ddl.set_attribute('german_lexer','mixed_case','no'); -- <<<<< вот оно !!!
exec ctx_ddl.set_attribute('german_lexer','alternate_spelling','german');

exec ctx_ddl.create_preference('global_lexer', 'multi_lexer'); -- эти две строчки может и не нужно, пока не разобрался
exec ctx_ddl.add_sub_lexer('global_lexer','default','german_lexer');


CREATE INDEX X_SEARCH_IN_CLOB  ON  my_docs(my_clob_field) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('lexer german_lexer'); 
30 ноя 18, 13:14    [21749870]     Ответить | Цитировать Сообщить модератору
 Re: Как искать текст нечувствительно к регистру с помощью Oracle text ?  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6281
Не стану начинать новую тему, теперь новая проблема:

в таблице два CLOB, но при создании такого же индекса для второго поля вылетает:

ORA-29879:
cannot create multiple domain indexes on a column list using same indextype


и ничего не нагугливается


Есть идеи?

Заранее спасибо
30 ноя 18, 13:39    [21749927]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить