powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как искать текст нечувствительно к регистру с помощью Oracle text ?
3 сообщений из 3, страница 1 из 1
Как искать текст нечувствительно к регистру с помощью Oracle text ?
    #39740784
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

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

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

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

Код: plsql
1.
2.
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);



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

Код: plsql
1.
2.
3.
4.
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", например, нет.

Что посоветуете? Может индекс как то по-другому надо создать?
...
Рейтинг: 0 / 0
Как искать текст нечувствительно к регистру с помощью Oracle text ?
    #39740812
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел. Оказалось, что действительно дело в индексе.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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'); 
...
Рейтинг: 0 / 0
Как искать текст нечувствительно к регистру с помощью Oracle text ?
    #39740841
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стану начинать новую тему, теперь новая проблема:

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

Код: plsql
1.
2.
ORA-29879:
cannot create multiple domain indexes on a column list using same indextype



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


Есть идеи?

Заранее спасибо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как искать текст нечувствительно к регистру с помощью Oracle text ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]