oracle全文索引之SECTION GROUP_5_AUTO_SECTION_GROUP
這篇文章介紹Oracle全文索引的SECTION GROUP屬性中的AUTO_SECTION_GROUP。
[@more@]Oracle的AUTO_SECTION_GROUP是XML_SECTION_GROUP的增強型。對於XML_SECTION_GROUP使用者需要自己新增需要定義的節組,而使用AUTO_SECTION_GROUP,則Oracle會自動新增節組以及屬性資訊。
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(4000));
表已建立。
SQL> INSERT INTO T VALUES (1, '
2
3
4
5
6
7
8 <!-- Metric oracle_csa -->
9
10
11
12
13
14
15
16
17
19 ]]>
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 ');
已建立 1 行。
SQL> COMMIT;
提交完成。
SQL> CONN CTXSYS/CTXSYS@YANGTK
已連線。
SQL> BEGIN
2 CTX_DDL.CREATE_SECTION_GROUP('TEST_XML', 'XML_SECTION_GROUP');
3 CTX_DDL.CREATE_SECTION_GROUP('TEST_AUTO', 'AUTO_SECTION_GROUP');
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 ('SECTION GROUP CTXSYS.TEST_XML');
索引已建立。
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'CONFIGURATION') > 0;
ID
----------
1
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'FILE WITHIN ShortName') > 0;
SELECT ID FROM T WHERE CONTAINS(DOCS, 'FILE WITHIN ShortName') > 0
*
ERROR 位於第 1 行:
ORA-29902: 執行 ODCIIndexStart() 例行程式中出錯
ORA-20000: Oracle Text error:
DRG-10837: 段 ShortName 不存在
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'INSTANCE WITHIN Property@SCOPE') > 0;
SELECT ID FROM T WHERE CONTAINS(DOCS, 'INSTANCE WITHIN Property@SCOPE') > 0
*
ERROR 位於第 1 行:
ORA-29902: 執行 ODCIIndexStart() 例行程式中出錯
ORA-20000: Oracle Text error:
DRG-10837: 段 Property@SCOPE 不存在
SQL> DROP INDEX IND_T_DOCS;
索引已丟棄。
SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('SECTION GROUP CTXSYS.TEST_AUTO');
索引已建立。
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'CONFIGURATION') > 0;
ID
----------
1
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'FILE WITHIN ShortName') > 0;
ID
----------
1
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'INSTANCE WITHIN Property@SCOPE') > 0;
ID
----------
1
透過上面的例子可以看到二者的區別,如果使用XML_SECTION_GROUP, 則使用者在進行節搜尋的時候,需要使用ADD_ZONE_SECTION、ADD_FIELD_SECTION或ADD_ATTR_SECTION來自己添 加感興趣的節組,而使用AUTO_SECTION_GROUP,則Oracle會預定義好所有的節組和屬性。
使用AUTO_SECTION_GROUP則不能在呼叫上面三種新增節組的過程,但是可以使用ADD_STOP_SECTION過程,來控制那些部分不能被節搜尋訪問到。
SQL> CONN CTXSYS/CTXSYS@YANGTK
已連線。
SQL> BEGIN
2 CTX_DDL.ADD_STOP_SECTION('TEST_AUTO', 'ShortName');
3 END;
4 /
PL/SQL 過程已成功完成。
SQL> CONN YANGTK/YANGTK@YANGTK
已連線。
SQL> ALTER INDEX IND_T_DOCS REBUILD PARAMETERS ('REPLACE SECTION GROUP CTXSYS.TEST_AUTO');
索引已更改。
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'FILE') > 0;
ID
----------
1
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'FILE WITHIN Label') > 0;
ID
----------
1
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'FILE WITHIN ShortName') > 0;
未選定行
指定了STOP_SECTION,僅僅意味著在指定的節組中搜尋不到,而在整個文件中,該節組中的內容仍然可見。
另外,需要注意,節組的標識是大小寫敏感的。
如果一篇文件大部分的內容都有使用節搜尋,那麼使用AUTO_SECTION_GROUP屬性會相當的方便,但如果一篇文件如果僅僅個別的部分需要使用節搜尋,可以考慮使用XML_SECTION_GROUP,並人為的新增個別的SECTION GROUP,這樣可以提高索引的建立效率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1022452/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle全文索引之SECTION GROUP_6_PATH_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_4_XML_SECTION_GROUPOracle索引XML
- oracle全文索引之SECTION GROUP_3_HTML_SECTION_GROUPOracle索引HTML
- oracle全文索引之SECTION GROUP_2_BASIC_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_1_NULL_SECTION_GROUPOracle索引Null
- oracle全文索引之STORAGE PREFERENCEOracle索引
- oracle全文索引之WORDLIST PREFERENCEOracle索引
- oracle全文索引之幾個關鍵表Oracle索引
- oracle全文索引之commit與DML操作Oracle索引MIT
- oracle全文索引之如何實現查詢Oracle索引
- oracle全文索引之STOPLIST_4_MULTI_STOPLISTOracle索引
- oracle全文索引之STOPLIST_3_DEFAULT_STOPLISTOracle索引
- oracle全文索引之STOPLIST_2_EMPTY_STOPLISTOracle索引
- oracle全文索引之STOPLIST_1_BASIC_STOPLISTOracle索引
- oracle全文索引之LEXER_4_MULTI_LEXEROracle索引
- oracle全文索引之LEXER_3_DEFAULT_LEXEROracle索引
- oracle全文索引之LEXER_2_CHINESE_LEXEROracle索引
- oracle全文索引之LEXER_1_BASIC_LEXEROracle索引
- oracle全文索引之FILTER_4_PROCEDURE_FILTEROracle索引Filter
- oracle全文索引之FILTER_3_FORMAT_COLUMNOracle索引FilterORM
- oracle全文索引之FILTER_1_NULL_FILTEROracle索引FilterNull
- oracle全文索引之datastore_6_NESTED_DATASTOREOracle索引AST
- oracle全文索引之datastore_5_detail_datastoreOracle索引ASTAI
- oracle全文索引之datastore_4_URL_DATASTOREOracle索引AST
- oracle全文索引之datastore_3_FILE_DATASTOREOracle索引AST
- oracle全文索引之datastore_1_DIRECT_DATASTOREOracle索引AST
- Oracle:全文索引Oracle索引
- Oracle AWR Top SQL sectionOracleSQL
- oracle全文索引之配置全文檢索環境Oracle索引
- oracle 之全文索引表的分割槽交換案例Oracle索引
- oracle全文索引之About_INDEX_THEMES操作Oracle索引Index
- oracle全文索引之STOPLIST_ CTXCAT 索引_INDEX SETOracle索引Index
- oracle全文索引之datastore_2_MULTI_COLUMN_DATASTOREOracle索引AST
- Oracle的全文索引Oracle索引
- ZT oracle全文索引Oracle索引
- oracle全文索引之FILTER_2_INSO_FILTEROracle索引Filter
- oracle 全文索引的配置Oracle索引
- MongoDB之索引(全文索引)MongoDB索引