ORACLE TEXT DATASTORE PREFERENCE(一)
Oracle Text功能十分強大,可是文檔上給出的例子總是過于簡單,而且可能是為了減少篇幅,不少例子只給出了其中關鍵的幾步,但是對于初學者而言,閱讀這樣的例子很難對全文索引的創建有一個清晰的了解,而更多的時候可能會使初學者更加迷茫。
打算通過一系列的文章對Oracle全文索引做一個比較詳細的描述。里面會對包含很多例子,而且例子會覆蓋Oracle全文索引的大部分內容。
這篇文章首先從全文索引的DATASTORE屬性開始,介紹DATASTORE中的最簡單的DIRECT DATASTORE。
Oracle的全文索引不要求被索引的文章一定存儲在數據庫中,不過如果文章存儲在數據庫的一列中,那么這種情況建立索引是最簡單的。
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 direct database store sample');
已創建?1 行。
SQL> COMMIT;
提交完成。
對于上面提到的DIRECT DATASTORE類型,下面三種創建索引方式是等價的:
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT;
索引已創建。
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'DATABASE') > 0;
ID DOCS
---------- ----------------------------------------
2 This is a direct database store sample
SQL> DROP INDEX IND_T_DOCS;
索引已丟棄。
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.DEFAULT_DATASTORE');
索引已創建。
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'DATABASE') > 0;
ID DOCS
---------- ----------------------------------------
2 This is a direct database store sample
SQL> DROP INDEX IND_T_DOCS;
索引已丟棄。
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.DIRECT_DATASTORE');
索引已創建。
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'DATABASE') > 0;
ID DOCS
---------- ----------------------------------------
2 This is a direct database store sample
上面給出了一個最簡單的全文索引的例子。
另外,由DR$開頭的4張表是系統為了支持全文索引而自動生成的,不過這4張表的用處就不再這里討論了。
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DR$IND_T_DOCS$I TABLE
DR$IND_T_DOCS$K TABLE
DR$IND_T_DOCS$N TABLE
DR$IND_T_DOCS$R TABLE
T TABLE
總結
以上是生活随笔為你收集整理的ORACLE TEXT DATASTORE PREFERENCE(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDL语句为什么不能回滚
- 下一篇: ORACLE TEXT DATASTOR