Поведение фигурных скобок текста Oracle

Я использую текст оракула для опережающего чтения (согласно писателю спецификации) в строке поиска.

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

Я попытался использовать для этого текст оракула и столкнулся с некоторыми проблемами, последняя из которых:

Таблица содержит эту запись для текста ответа: ... мы предлагаем множество вариантов ценообразования ...

SELECT
    questiontext as qtext,
   answertext as text,
   questionid FROM question
   WHERE contains(answertext, '{pric}', 1) > 0

;

Этот запрос ничего не возвращает. Но использование {pricing} вернет правильный результат.

И предложение, почему это происходит, было бы здорово!

Изменить: просто хотел добавить, что использование основы не работает для меня, потому что пользователь хочет различать «отчет» и «отчетность», и они хотят, чтобы совпадающая подстрока была выделена, что можно сделать, если я могу найти подстроку среди возвращенных Результаты.

Редактировать 2: я предполагаю, что оракул токенизирует каждое слово, используя какую-то границу слова в индексе, и, таким образом, без каких-либо подстановочных знаков он ищет токен, равный = 'pric', и поэтому не находит его (потому что есть токен «цена»). Итак, если это предположение верно, мне бы очень хотелось, чтобы кто-нибудь подсказал, как я могу заставить приведенный выше запрос работать с записью примера, сохраняя при этом пробелы, поэтому, если я наберу «ценовые варианты», он должен вернуться, но если я наберу «много вариантов», это не должно...


person mlnyc    schedule 22.10.2012    source источник


Ответы (1)


CONTAINS поддерживает подстановочные знаки и нечеткий текстовый поиск. Пытаться:

SELECT * FROM question WHERE contains(answertext, '{pric%}', 1) > 0;

or

SELECT * FROM question WHERE contains(answertext, 'fuzzy({pric})', 1) > 0;

Но с fuzzy "prize" также будет соответствовать вашим критериям поиска.

Чтобы выделить найденные подстроки, вы можете использовать CTX_DOC.MARKUP.

person HiltoN    schedule 01.11.2012