2015-07-10 3 views
0

У меня есть поле BLOB, в котором хранится некоторое содержимое документа.Oracle DB - специальные символы содержат функцию

И моя программа Java хотите сделать поиск по этому полю,

вот мой SQL заявление:

Select * from table_A where CONTAINS(BLOB_FIELD,'{Keyword}') > 0; 

При вводе пользователем «Р-» и «P =», они получили некоторый результат. Я хочу решить проблему, спасибо!

+0

Я обнаружил, что 'P-', 'P =', 'P "' выводит тот же результат, когда BLOB_FIELD содержит« P.1/1 »(номер страницы) – Ricky

+0

Какой тип документа хранится в BLOB_FIELD? (pdf, doc?) –

ответ

0

CONTAINS использует несколько символов/слов, которые должны быть экранированы, если вы хотите найти фактический символ (-, =, *,% и т. Д.). Попробуйте «P \ -» и посмотрите, поможет ли это ... если не увидеть ниже.

Также коэффициенты довольно высоки, что ваша установка LEXER определяет, что период после P определяет разрыв слова (конец предложения). Это контролируется администратором баз данных и имеет довольно сложную логику для определения того, как слова разделяются/не разбиваются на поиск текста.

+0

Спасибо, но добавьте '' is fail. – Ricky

+0

Как я уже сказал, те, которые я перечислял, являются лишь несколькими из многих символов, которые содержат «специальные». * это еще один из них. https: // docs.oracle.com/cd/B28359_01/text.111/b28304/cqspcl.htm#CCREF2093 edit: Я только заметил, что символ обратной косой черты должен быть экранирован при публикации здесь. – TheMadDBA

+0

Я уже прочитал, что документы из Oracle, но не help, и я избежал символа с {}, но проблема все еще существует. – Ricky

Смежные вопросы