首页 > 开发 > 综合 > 正文

全文索引查询模板的使用

2024-07-21 02:33:00
字体:
来源:转载
供稿:网友

  Oracle全文索引的查询模板功能可以对在CONTEXT索引上使用CATSEARCH语法,或者在CTXCAT索引上使用CONTAINS语法。  通过一个例子说明查询模板的使用:  SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));  表已创建。   SQL> INSERT INTO T VALUES (1, 'IT IS A EXAMPLE FOR QUERY TEMPLETE.');  已创建 1 行。  SQL> INSERT INTO T VALUES (2, 'USING THE TEMPLETE CONTAIN OperaTION CAN BE PERFORM ON CTXCAT INDEX.');  已创建 1 行。  SQL> INSERT INTO T VALUES (3, 'AND THE CATSEARCH OPERATION CAN BE PERFORM ON CONTENT INDEX.');  已创建 1 行。  SQL> COMMIT;  提交完成。  SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT;  索引已创建。  SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'TEMPLETE', 1) > 0;  ID
  ----------
  2
  1  SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, '<QUERY>
  2 <TEXTQUERY GRAMMAR="CTXCAT">
  3 TEMPLETE
  4 </TEXTQUERY>
  5 <SCORE DATATYPE="INTEGER"/>
  6 </QUERY>', 1) > 0;  ID
  ----------
  2
  1  上面这个给出了对于CONTEXT索引使用CATSEARCH语法的例子,不过这种用途的实际意义不大,不过下面的例子的实际意义就比较大了:  SQL> DROP INDEX IND_T_DOCS;  索引已丢弃。  SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CTXCAT;  索引已创建。  SQL> SELECT ID FROM T WHERE CATSEARCH(DOCS, '$USE', NULL) > 0;  未选定行  SQL> SELECT ID FROM T WHERE CATSEARCH(DOCS, '<QUERY>
  2 <TEXTQUERY GRAMMAR="CONTEXT">
  3 $USE
  4 </TEXTQUERY>
  5 <SCORE DATATYPE="INTEGER"/>
  6 </QUERY>', NULL) > 0;  ID
  ----------
  2  SQL> SELECT ID FROM T WHERE CATSEARCH(DOCS, ';((EXAMPLE, TEMPLETE), 3)', NULL) > 0;  未选定行  SQL> SELECT ID FROM T WHERE CATSEARCH(DOCS, ';((EXAMPLE, TEMPLETE), 3)', NULL) > 0;  未选定行  SQL> SELECT ID FROM T WHERE CATSEARCH(DOCS, '<QUERY>
  2 <TEXTQUERY GRAMMAR="CONTEXT">
  3 ;((EXAMPLE, TEMPLETE), 3)</TEXTQUERY>
  4 <SCORE DATATYPE="INTEGER"/>
  5 </QUERY>', NULL) > 0;  ID
  ----------
  1  CATSEARCH语法本身不支持ABOUT、STEM、FUZZY、NEAR等操作,但是使用了查询模板,这些本来CONTAINS语法才支持的操作都可以在CTXCAT索引上使用了。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表