ORACLE TEXT FILTER PREFERENCE(二)

来源:互联网 发布:h3c批量配置端口 编辑:程序博客网 时间:2024/05/14 03:36

这篇文章继续介绍全文索引的FILTER属性,介绍Oracle的INSO_FILTER属性。


Oracle的全文索引除了可以支持文本文件外,还可以支持多种文档格式,对于这些文档格式,在建立索引的时候需要指定INSO_FILTER参数,使用这个过滤参数,Oracle的全文索引可以识别绝大部分的常见文档,比如:word、pdf等。

下面看一个索引文档的例子:

SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));

表已创建。

SQL> INSERT INTO T VALUES (1, 'Oracle920 Text Application Developer''s Guide.pdf');

已创建 1 行。

SQL> INSERT INTO T VALUES (2, '35697_bommarito.doc');

已创建 1 行。

SQL> COMMIT;

提交完成。

SQL> CONN CTXSYS/CTXSYS@YANGTK
已连接。
SQL> BEGIN
2 CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');
3 CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', 'D:databaseoracleoracle docoracle 9i;D:databaseoracleoracle doc');
4 END;
5 /

PL/SQL 过程已成功完成。

SQL> CONN YANGTK/YANGTK@YANGTK
已连接。
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.TEST_FILE FILTER CTXSYS.INSO_FILTER');

索引已创建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;

ID DOCS
---------- ------------------------------------------------------------
2 35697_bommarito.doc
1 Oracle920 Text Application Developer's Guide.pdf

FILTER的默认值并不是一成不变的,这个默认值会受索引字段类型和DATASTORE的类型的影响。在上一篇文章中的测试中,对于存储在数据库中的VARCHAR2、CHAR和CLOB字段中的数据,Oracle自动选择了NULL_FILLER。在这里DATASTORE的属性为FILE_DATASTORE,则Oracle会默认选择INSO_FILTER作为默认值。

下面看具体的例子:

SQL> DROP INDEX IND_T_DOCS;

索引已丢弃。

SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.TEST_FILE FILTER CTXSYS.NULL_FILTER');

索引已创建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;

未选定行

SQL> DROP INDEX IND_T_DOCS;

索引已丢弃。

SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.TEST_FILE');

索引已创建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;

ID DOCS
---------- ------------------------------------------------------------
2 35697_bommarito.doc
1 Oracle920 Text Application Developer's Guide.pdf

原创粉丝点击