ITPub博客

首页 > 数据库 > Oracle > oracle全文索引之SECTION GROUP_2_BASIC_SECTION_GROUP

oracle全文索引之SECTION GROUP_2_BASIC_SECTION_GROUP

原创 Oracle 作者:jolly10 时间:2009-05-25 10:48:10 0 删除 编辑
这篇文章介绍Oracle全文索引的SECTION GROUP属性中的BASIC_SECTION_GROUP。[@more@]NULL_SECTION_GROUP 其实并不真正支持节搜索,而在支持节搜索的SECTION_GROUP中,BASIC_SECTION_GROUP是最基础的一种属性,它只支持以开头以结尾的结构的文档。这篇文章在介绍BASIC_SECTION_GROUP的同时,简单介绍一下节搜索。

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

Table created.

SQL> INSERT INTO T VALUES (1, 'TITLE
2 This is the contents of the example.
3 Use this example to test the basic_section_group.
');

1 row created.

SQL> INSERT INTO T VALUES (2, 'EXAMPLE
2 This line incluing the word title too.');

1 row created.

SQL> COMMIT;

Commit complete.

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

Index created.

SQL> SELECT ID FROM T WHERE CONTAINS (DOCS, 'HEADING') > 0;

ID
----------
1
2

在HTML、XML等类似结构的文档中,除了用来显示的内容外,还包括了大量用于控制结构的标识,而这些标识可能是不希望被索引的,而这就是SECTION GROUP其中的一个主要功能。

在上面的例子中,默认情况(NULL_SECTION_GROUP)肯定会将HEADING放入到索引键值中,但如果建立了BASIC_SECTION_GROUP则在

查询文档的时候,HEADING、CONTEXT等标签内容将不再被索引

SQL> DROP INDEX IND_T_DOCS;

Index dropped.

SQL> exec CTX_DDL.CREATE_SECTION_GROUP('TEST_BASIC', 'BASIC_SECTION_GROUP');

PL/SQL procedure successfully completed.

SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('SECTION GROUP TEST_BASIC');

Index created.

SQL> SELECT ID FROM T WHERE CONTAINS (DOCS, 'HEADING') > 0;

no rows selected

SQL> SELECT ID FROM T WHERE CONTAINS (DOCS, 'USE') > 0;

ID
----------
1


节搜索的另一个主要功能就是可以限制查询的范围。如果上面的例子中,文档包含了两部分,标题和正文,其中标题使用标签

,正文使用标签。因此,可以对BASIC_SECTION_GROUP添加区域属性,运行查询在文档的某个范围内进行。

SQL> DROP INDEX IND_T_DOCS;

Index dropped.

SQL> exec CTX_DDL.ADD_ZONE_SECTION('TEST_BASIC', 'HEAD', 'HEADING');

PL/SQL procedure successfully completed.

SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('SECTION GROUP TEST_BASIC');

Index created.

SQL> SELECT ID FROM T WHERE CONTAINS (DOCS, 'TITLE') > 0;

ID
----------
1
2

SQL> SELECT ID FROM T WHERE CONTAINS (DOCS, 'TITLE WITHIN HEAD') > 0;

ID
----------
1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/271283/viewspace-1022448/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-20

  • 博文量
    263
  • 访问量
    769116