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全文索引之commit與DML操作Oracle索引MIT
- Oracle:全文索引Oracle索引
- oracle全文索引之幾個關鍵表Oracle索引
- oracle全文索引之如何實現查詢Oracle索引
- Oracle的全文索引Oracle索引
- oracle全文索引之配置全文檢索環境Oracle索引
- oracle全文索引之同步和優化索引做了什麼Oracle索引優化
- HTML <section> 標籤HTML
- <section>與<article> 區別
- A Proof of Golden Section of Fibonacci SequenceGo
- MySQL索引系列:全文索引MySql索引
- MySQL全文索引的使用MySql索引
- MySQL全文索引原始碼剖析之Insert語句執行過程MySql索引原始碼
- Mach-O Inside: BSS SectionMacIDE
- artice與section的區別
- 【Basic Abstract Algebra】Exercises of Section 1.1
- 【Basic Abstract Algebra】Exercises for Section 1.2
- 【Basic Abstract Algebra】Exercises for Section 1.4
- 【Basic Abstract Algebra】Exercises for Section 1.3
- Chapter1 入門/Section 1.2APT
- 【Basic Abstract Algebra】Exercises for Section 2.2 — Subgroups
- mysql中文全文索引的記錄MySql索引
- 【SqlServer】管理全文索引(FULL TEXT INDEX)SQLServer索引Index
- 一個section加密的apk的分析加密APK
- 【Abaqus】*Solid Section定義複合材料Solid
- 【Basic Abstract Algebra】Exercises for Section 2.1 — Definitions and examples
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- Oracle之結構Oracle
- Section 7_SysTick系統定時器定時器
- 夜王 - section4 - 父愛如離
- 【Basic Abstract Algebra】Exercises for Section 1.6 — The Chinese Remainder TheoremREMAI
- 達夢資料庫全文索引簡介資料庫索引
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle
- oracle之 如何 dump logfileOracle
- oracle之 反向鍵索引Oracle索引
- Call for Papers | IJCNN 2019 Special Section 徵稿通道開啟CNN
- Jmeter 臨界部分控制器 Critical Section ControllerJMeterController
- LightDB/postgresql內建特性之訪問oracle之oracle_fdw介紹SQLOracle
- Oracle調優之看懂Oracle執行計劃Oracle