oracle全文索引之datastore_1_DIRECT_DATASTORE

来源:互联网 发布:主力资金指标源码有图 编辑:程序博客网 时间:2024/06/10 04:49

Oracle Text功能十分强大,开始学习,主要参考yangtingkun的blog和文档进行。

第一步先搞清楚datastore的类型。


DATASTORE的类型如下:

DIRECT_DATASTORE
MULTI_COLUMN_DATASTORE
DETAIL_DATASTORE
FILE_DATASTORE
NESTED_DATASTORE
URL_DATASTORE
USER_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

原创粉丝点击