Oracle对HTML文档预定义了专门的HTML_SECTION_GROUP,而对XML文档,也预定义好了专门的SECTION_GROUP——XML_SECTION_GROUP。
其实,Oracle除了XML_SECTION_GROUP外,AUTO_SECTION_GROUP和PATH_SECTION_GROUP也都是为XML文档预定义的,不过,这篇文档先只讨论XML_SECTION_GROUP。
XML文档的格式要求比HTML文档严谨、规范,这也使得XML_SECTION_GROUP比HTML_SECTION_GROUP增加了新的功能,比如ATTRIBUTE的搜索。
如果一篇结构类型下面例子中的文档,使用HTML_SCTION_GROUP和BASIC_SECTION_GROUP都是无法索引到内容的,只能通过XML_SECTION_GROUP的ATTR_SECTION来检索标签属性中的内容。
文档内容如下:
<!-- Copyright (c) 2001 Oracle Corporation. All rights Reserved -->
<!-- Do not modify the contents of this file by hand. -->
如果建立不同的HTML_SECTION_GROUP或XML_SECTION_GROUP是检索不到内容的:
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
表已创建。
SQL> INSERT INTO T VALUES (1, 'context.xml');
已创建 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', 'F:');
4 CTX_DDL.CREATE_SECTION_GROUP('TEST_HTML', 'HTML_SECTION_GROUP');
5 CTX_DDL.CREATE_SECTION_GROUP('TEST_XML', 'XML_SECTION_GROUP');
6 END;
7 /
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.NULL_FILTER
3 SECTION GROUP CTXSYS.TEST_HTML');
索引已创建。
SQL> SELECT * FROM T WHERE CONTAINS (DOCS, 'COMPLETE') > 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 FILTER CTXSYS.NULL_FILTER
3 SECTION GROUP CTXSYS.TEST_XML');
索引已创建。
SQL> SELECT * FROM T WHERE CONTAINS (DOCS, 'COMPLETE') > 0;
未选定行
SQL> DROP INDEX IND_T_DOCS;
索引已丢弃。
对于XML_SECTION_GROUP可以建立ATTRIBUTE节组:
SQL> CONN CTXSYS/CTXSYS@YANGTK
已连接。
SQL> BEGIN
2 CTX_DDL.ADD_ATTR_SECTION('TEST_HTML', 'NAME', 'CONST@NAME');
3 END;
4 /
BEGIN
*
ERROR 位于第 1 行:
ORA-20000: Oracle Text 错误:
DRG-12225: 这一段类型不能添加到此段组中
ORA-06512: 在"CTXSYS.DRUE", line 157
ORA-06512: 在"CTXSYS.CTX_DDL", line 314
ORA-06512: 在line 2
SQL> BEGIN
2 CTX_DDL.ADD_ATTR_SECTION('TEST_XML', 'NAME', 'CONST@NAME');
3 END;
4 /
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.NULL_FILTER
3 SECTION GROUP CTXSYS.TEST_XML');
索引已创建。
SQL> SELECT * FROM T WHERE CONTAINS (DOCS, 'COMPLETE WITHIN NAME') > 0;
ID DOCS
---------- ----------------------------------------
1 context.xml
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/271283/viewspace-1022451/ ,如需转载,请注明出处,否则将追究法律责任。