create table t(id number,docs varchar2(1000));
insert into t values(1,'IT IS A EXAMPLE FOR QUERY TEMPLETE.');
insert into t values(2,'USING THE TEMPLETE CONTAIN OPERATION CAN BE PERFORM ON CTXCAT INDEX.');
insert into t values(3,'AND THE CATSEARCH OPERATION CAN BE PERFORM ON CONTENT INDEX.');
create index ind_docs on t(docs) indextype is ctxsys.context;执行 select id from t
   where contains(docs, 
                  '<query>
                    <textquery>XML or Java</textquery>
                   </query>')>0;时报:ORA-29902: 执行 ODCIIndexStart() 例行程序中出错
ORA-20000: Oracle Text error:
DRG-50900: text query parser error on line 2, column 21  
DRG-50905: invalid score threshold <textquery  
这咋么回事啊?
这是在官方网站上的一段代码,http://www.oracle.com/technology/products/oracle9i/daily/jun13.html
顺便还问一下select id from t where contains(docs,'$USE',1)>0;为什么能查出第二条记录。

解决方案 »

  1.   

    ORA-20000: Oracle Text error: 
    DRG-50900: text query parser error on line 2, column 21  
    DRG-50905: invalid score threshold <textquery  
    --------------------------
    我觉得应该是无法识别这推字符
    '<query>
                        <textquery>XML or Java</textquery>
                       </query>'
      

  2.   

    CONTAINS()不用加权的吧,有两条就会出来两条啊
      

  3.   

    建立ctxcat索引以后用
    select id from t
       where catsearch(docs, 
                      '<query>
                        <textquery>XML or Java</textquery>
                       </query>',null)>0;能使,官方网站上说是都能使用,想不通。