红联Linux门户
Linux帮助

Oracle数据库全文索引查询模板的使用

发布时间:2006-11-02 00:45:11来源:红联作者:fitness
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, '
2
3 TEMPLETE
4
5
6 ', 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, '
2
3 $USE
4
5
6 ', 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, '
2
3 ;((EXAMPLE, TEMPLETE), 3)
4
5 ', NULL) > 0;
ID
----------
1


CATSEARCH语法本身不支持ABOUT、STEM、FUZZY、NEAR等操作,但是使用了查询模板,这些本来CONTAINS语法才支持的操作都可以在CTXCAT索引上使用了。
文章评论

共有 5 条评论

  1. centry21 于 2006-11-27 16:29:25发表:

  2. 于 2006-11-26 17:36:50发表:

    Well done!
    http://lzwuhcyz.com/qmtz/fxrx.html | http://prsoejvn.com/krmi/gvik.html

  3. 于 2006-11-26 17:36:37发表:

    Nice site!
    My homepage | Please visit

  4. 于 2006-11-26 17:36:29发表:

    Nice site!
    My homepage | Cool site

  5. 于 2006-11-26 14:49:42发表:

    Well done!
    My homepage | Cool site