我正在设计一个网络应用程序,其中有一个搜索页面,可以进行全文搜索(我在我感兴趣的文本列上创建了一个 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();