Я разрабатываю веб-приложение, и в нем есть страница поиска с возможностью полнотекстового поиска (я создал индекс CONTEXT для интересующих меня текстовых столбцов). С помощью Oracle вы можете выполнить запрос CONTAINS, который запускает полнотекстовый поиск и возвращает вам результаты - это здорово, за исключением случаев, когда вы вводите зарезервированный символ, например:
"лед* И места И Аляска"
тот факт, что вы поместили «*» после «льда», приведет к ошибке Oracle, т.е.
ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
Каков самый изящный способ избежать этого - я знаю, что вы можете отфильтровать зарезервированные символы и ключевые слова, - но я бы подумал, что будет более элегантный способ. Если вы знаете о такой вещи, мне было бы очень интересно узнать :-)
ПРИМЕЧАНИЕ. Вот код, который запускает текстовый поиск Oracle, ничего особенного:
OracleCommand cmd = new OracleCommand("SELECT ref_id, title, table_name, description FROM v_all_media WHERE CONTAINS (title, :pTitle) > 0", conn);
cmd.Parameters.Add("pTitle", title);
OracleDataReader reader = cmd.ExecuteReader();