oracle全文索引之SECTION GROUP_2_BASIC_SECTION_GROUP
這篇文章介紹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
2This 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
2This 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
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
Table created.
SQL> INSERT INTO T VALUES (1, '
2
3 Use this example to test the basic_section_group.
1 row created.
SQL> INSERT INTO T VALUES (2, '
2
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
節搜尋的另一個主要功能就是可以限制查詢的範圍。如果上面的例子中,文件包含了兩部分,標題和正文,其中標題使用標籤
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle全文索引之SECTION GROUP_6_PATH_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_5_AUTO_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_4_XML_SECTION_GROUPOracle索引XML
- oracle全文索引之SECTION GROUP_3_HTML_SECTION_GROUPOracle索引HTML
- 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索引