ORACLE TEXT FILTER PREFERENCE(一)
介紹完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
總結
以上是生活随笔為你收集整理的ORACLE TEXT FILTER PREFERENCE(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE TEXT DATASTOR
- 下一篇: ORACLE TEXT FILTER P