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索引上使用了。下一篇:java-oracle中几十个实用的PL/SQL 第一阶段 Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息。 A. DECLARE erec emp%ROWTYPE; BEGIN SELECT * INTO erec FROM emp WHERE empno=&雇员编号; DBMS_OUTPUT.PUT_LINE(′EmpNo′ || ′ ′ || ′Ename′ || ′ ′|| ′Job′ || ′ ′ || ′Manager′ || ′ ′ || ′HireDate′ || ′ ′ || ′Salary′ || ′ ′ || ′Commision′ || ′ ′ || ′DeptNo′); DBMS_OUTPUT.PUT_LINE(erec.ename || ′ ′ || erec.job || ′ ′ || erec.mgr || ′ ′ ||...[查看详情] |