Oracle 搜索包含查询运算符单词的文本列

Oracle 搜索包含查询运算符单词的文本列,oracle,text,escaping,contains,Oracle,Text,Escaping,Contains,到目前为止,我一直在讨论这个问题,一点运气都没有。 我有一个基本的查询,即搜索“or”或“and”是否包含在列中 例如: SELECT * FROM MyTable WHERE CONTAINS(title, 'and', 1) > 0 执行此操作会引发oracle错误:SQL错误:ORA-29902:执行ODCIIndexStart()例程时出错 搜索此网站和一般网站以找到解决方案 找到这两个线程,我给了我一个如何转义这个关键字的提示 , 但它不起作用 我知道我有标题所在的行(例如):

到目前为止,我一直在讨论这个问题,一点运气都没有。 我有一个基本的查询,即搜索“or”或“and”是否包含在列中

例如:

SELECT * FROM MyTable
WHERE CONTAINS(title, 'and', 1) > 0
执行此操作会引发oracle错误:SQL错误:ORA-29902:执行ODCIIndexStart()例程时出错

搜索此网站和一般网站以找到解决方案

找到这两个线程,我给了我一个如何转义这个关键字的提示

,

但它不起作用

我知道我有标题所在的行(例如):

  • CPAND和SLAF
  • QOAND和GI
如果我在单词“and”(给出此查询)的两端粘贴两个“%”(pourcentage):

我没有错误,但是在我的结果中,我得到了包含字符串“and”(比如QOANDOA)的单词。请注意,我可以添加单个“%”,它也可以工作

但这不是我想要的:(

使用{}进行转义会返回一个空结果。使用“/”也一样


关于如何解决这个问题,您有什么想法吗?

您应该创建一个上下文索引,并定期将其与应用于拥有该索引的表的DML同步。这可以通过使用ctx_ddl.sync_索引来完成:

SQL> create index idx_title on mytable(title) indextype is ctxsys.context;

Index created.

SQL> exec ctx_ddl.sync_index('idx_title'); -- there are lots of arguments optional, in this case i left the other args. as default

PL/SQL procedure successfully completed.

SQL> SELECT * FROM MyTable;   

TITLE
--------------
CPAND AND SLAF
QOAND AND GI
QOANDOA

SQL> SELECT * FROM MyTable
WHERE CONTAINS(title, '%AND%', 1) > 0;  2  

TITLE
--------------
CPAND AND SLAF
QOAND AND GI

MOS的文章《Oracle文本:使用上下文包含逗号和点搜索》(Doc ID 807749.1)提供了更多的步骤,这些步骤可能会有所帮助。谢谢。我将阅读,看看是否能找到问题的答案
SQL> create index idx_title on mytable(title) indextype is ctxsys.context;

Index created.

SQL> exec ctx_ddl.sync_index('idx_title'); -- there are lots of arguments optional, in this case i left the other args. as default

PL/SQL procedure successfully completed.

SQL> SELECT * FROM MyTable;   

TITLE
--------------
CPAND AND SLAF
QOAND AND GI
QOANDOA

SQL> SELECT * FROM MyTable
WHERE CONTAINS(title, '%AND%', 1) > 0;  2  

TITLE
--------------
CPAND AND SLAF
QOAND AND GI