在Oracle Text搜索/查询中解析保留字符?

时间:2013-02-15 11:31:24

标签: c# oracle-text

我正在设计一个网络应用程序,其中有一个搜索页面,可以进行全文搜索(我已经在我感兴趣的文本列上创建了一个CONTEXT索引)。使用Oracle you can do a CONTAINS query运行全文搜索并返回结果 - 这很好,除非你输入一个保留字符,例如:

  

“ice * AND AND AND Alaska”

你在'ice'之后加上'*'的事实会给你一个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();

1 个答案:

答案 0 :(得分:0)

  

{}

     

使用大括号来转义字符串或符号。一切   在转义序列的一部分括号内。

     

使用大括号转义单个字符时,转义   字符在查询中成为单独的标记。

     

\

     

使用反斜杠字符转义单个字符或符号。   只有反斜杠后面的字符才会被转义。

请参阅Special Characters in Queries