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