oracle全文索引之SECTION GROUP_3_HTML_SECTION_GROUP

jolly10發表於2009-05-25
這篇文章介紹Oracle全文索引的SECTION GROUP屬性中的HTML_SECTION_GROUP。[@more@]

雖然BASIC_SECTION_GROUP 已經可以解決很多基本的節搜尋問題,但是Oracle還是推薦對於HTML文件使用專門定義的HTML_SECTION_GROUP屬性。這是由於 HTML文件具有很多不規範的表示方法,使用HTML_SECTION_GROUP能夠更好的識別HTML文件的機構。另 外,BASIC_SECTION_GROUP不支援不匹配的括號、註釋表示和屬性等。

下面透過一個簡單的例子來看一下HTML_SECTION_GROUP和BASIC_SECTION_GROUP的區別。HTML_SECTION_GROUP支援META標籤中的NAME/CONTENT屬性對的查詢,下面看具體的例子。

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

表已建立。

SQL> INSERT INTO T VALUES (1, 'README.HTML');

已建立 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_BASIC', 'BASIC_SECTION_GROUP');
5 CTX_DDL.ADD_FIELD_SECTION('TEST_BASIC', 'MTAG', 'META@HTML');
6 CTX_DDL.CREATE_SECTION_GROUP('TEST_HTML', 'HTML_SECTION_GROUP');
7 CTX_DDL.ADD_FIELD_SECTION('TEST_HTML', 'MTAG', 'META@HTML');
8 END;
9 /

PL/SQL 過程已成功完成。

下面看一下README.HTML文件的內容:



Oracle Ultra Search Sample Crawler Agent Readme



Oracle Ultra Search Sample Crawler Agent Readme


Table of Contents


1. Introduction
2. Sample agent files
3. Setting up the Sample Crawler Agent

1. Introduction



Oracle Ultra Search provides a sample implementation of user defined data source
agent which uses the Ultra Search agent API. The purpose of this sample is to
provide a concrete illustration on the usage of the agent APIs.

Upon invocation this sample agent connects to a specified Oracle database and
retrieve the contents of a table for the crawler to collect and index.

The sample agent are fully functional and can be customized to adapt to other
database based data source. This agent performs the following task:



  • Reading of data source parameters

  • Connection to the database that contains the data source

  • Initialization of fetching document URL and attributes from the data source

  • Fetching of document URL and attributes from the data source

  • Disconnection from the data source


Complete and comprehensive documentation on agent API is provided in the following
document:



  • Ultra Search Crawler agent API




觀察上面的META標籤,裡面包含NAME/CONTENT屬性對,可以根據例子的方式,基於META中名稱的值建立FIELD,來搜尋CONTENT的值。

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_BASIC');

索引已建立。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'DATABASE') > 0;

ID DOCS
---------- ----------------------------------------
1 README.HTML

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'SECTION WITHIN MTAG') > 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_HTML');

索引已建立。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'DATABASE') > 0;

ID DOCS
---------- ----------------------------------------
1 README.HTML

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'SECTION WITHIN MTAG') > 0;

ID DOCS
---------- ----------------------------------------
1 README.HTML

從這個例子可以看出,對於HTML文件來說,使用HTML_SECTION_GROUP可以擁有更多的功能。

最後提醒一下,無論是FIELD_SECTION還是ZONE_SECTION,表示文件的TAG標籤都是大小寫敏感的,其大小寫需要和原文中匹配。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1022450/,如需轉載,請註明出處,否則將追究法律責任。

相關文章