1

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

“冰* AND 地方 AND 阿拉斯加”

您在“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();
4

1 回答 1

0

{}

使用大括号转义一串字符或符号。一组大括号中的所有内容都被视为转义序列的一部分。

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

\

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

查看查询中的特殊字符

于 2013-02-16T19:12:49.473 回答