Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Запрос на полное равенство через Oracle Text  [new]
Деев И.
Member

Откуда: отсюда
Сообщений: 783
Что-то нигде не нашел в доке, как сделать, чтобы можно было через Oracle Text искать на полное точное соответствие проиндексированного текста запросу. (Весьма специфичное требование!) Не на вхождение, а именно на полное соответствие. Или такого сделать в принципе нельзя? Желательно через CTXCAT индекс. Но можно и через CTXSYS.
2 окт 06, 15:55    [3211236]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
А что a=b уже не рулит?
2 окт 06, 16:00    [3211277]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
Stax.
Guest
mcureenab
А что a=b уже не рулит?

имхо
Деев И. хочет что-то типа
where а LIKE '% '||b||' %'
пошук по индексу, он ведь уже есть

......
stax
2 окт 06, 16:45    [3211559]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
Деев И.
Member

Откуда: отсюда
Сообщений: 783
Э, нет!
Не a like '%b%', а именно a='b'! Но через Oracle Text.
По умолчанию, при поиске точного соответствия по заданному тексту, в Oracle Text ищутся строки, поиндексированное поле которых _содержит_ точное соответствие заданной фразе. Это достигается заключением текста условия в кавычки. А мне-то нужно найти строки именно точно (в пределах изменения регистра) равные строке поиска. Экзотика, однако: Oracle Text предназначен для поиска нужных нам "иголок" в больших "стогах" текста, и не заточен под поиск по равенству. Но может, можно как-то извернуться?

Я понимаю, что проще обычный индекс использовать, но вот появилась потребность реализовать такой поиск именно через Oracle Text (есть резон).
Однако, если вариантов не найдется, естественно, придется обращаться к обычному индексу.
2 окт 06, 22:51    [3212760]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
AlexOI
Member

Откуда: Санкт-Петербург
Сообщений: 161
Скорее всего это невозможно. Ведь текстовый индекс содержит именно отдельные слова, да еще и в верхнем регистре. Так что выход только в построении обычного индекса.
3 окт 06, 00:25    [3212871]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
po3
Guest
Ну может быть
...where contains(column_name,:s1)>0 and length(column_name)=length(:s1)
И вроде можно заставить Oracle Text не приводить токены к верхнему регистру.
3 окт 06, 11:48    [3214153]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
AlexOI
Скорее всего это невозможно. Ведь текстовый индекс содержит именно отдельные слова, да еще и в верхнем регистре. Так что выход только в построении обычного индекса.


так почему нельзя выдернуть из стога охапку, а вней найти иголку?

...where contains(column_name, :s1)>0 and column_name=:s1
?
3 окт 06, 11:54    [3214185]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на полное равенство через Oracle Text  [new]
Деев И.
Member

Откуда: отсюда
Сообщений: 783
Мы будем тянуть весь стог разом ;-) Именно это и требуется.
Да, почему-то часто очевидные решения, самые логичные, куда-то ускользают.
Всем спасибо!

Я знал, что это просто...
3 окт 06, 20:25    [3217329]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить