关闭

ORACLE TEXT FILTER PREFERENCE(一)

标签: filteroraclesqlnullinsertparameters
844人阅读 评论(1) 收藏 举报
分类:

介绍完Oracle全文索引的DATASTORE属性,继续介绍Oracle的FILTER属性。


Oracle全文索引的FILTER属性主要是针对具有一定格式的文档,Oracle根据FILTER的设定来过滤那些不属于文章内容的部分。

FILTER属性包含的属性有:CHARSET_FILTER、INSO_FILTER、NULL_FILTER、USER_FILTER、PROCEDURE_FILTER几种。

这里仍然从FILTER的最简单属性NULL_FILTER开始介绍:

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

表已创建。

SQL> INSERT INTO T VALUES (1, 'This is a sample for Oracle TEXT.');

已创建 1 行。

SQL> INSERT INTO T VALUES (2, 'This is a null filter sample');

已创建 1 行。

SQL> COMMIT;

提交完成。

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

索引已创建。

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

ID DOCS
---------- ----------------------------------------
1 This is a sample for Oracle TEXT.

上面就是一个简单的NULL_FILTER的例子,所谓NULL_FILTER就是不使用过滤。Oracle推荐对于文本、HTML和XML文件不使用过滤。

Oracle的FILTER的默认值和索引列的字段类型,以及DATASTORE的属性有关。如果是存储在数据库中的列,且列的类型为VARCHAR2、CHAR、CLOB,则Oracle会使用NULL_FILTER作为FILTER的默认属性。

其实上面这个例子和不指定FILTER是等价的。

SQL> DROP INDEX IND_T_DOCS;

索引已丢弃。

SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT;

索引已创建。

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

ID DOCS
---------- ----------------------------------------
2 This is a null filter sample

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2171109次
    • 积分:19855
    • 等级:
    • 排名:第428名
    • 原创:158篇
    • 转载:634篇
    • 译文:1篇
    • 评论:45条
    最新评论