這里先給出一個簡單示例說利用Oracle Text實現全文檢索的方法與步驟,在后面在進行具體的說明。Orcale9i提供了Oracle Text Manager可以簡化許多工作,所有在Oracle Text Manager中完成的工作,都可以在通過PL/SQL來實現。要使用Oracle Text,必須具有CTXAPP角色或者是CTXSYS用戶。Oracle Text為系統管理員提供CTXSYS用戶,為應用程序開發人員提供CTXAPP角色。
CTXSYS用戶可執行以下任務:啟動Oracle Text服務器,執行CTXAPP角色的所有任務。 具有CTXAPP角色的用戶可執行以下任務: 創建索引,管理 Oracle Text 數據字典,包括創建和刪除首選項,進行Oracle Text 查詢,使用 Oracle Text PL/SQL程序包。
CREATE TABLE docs (id NUMBER PRIMARY KEY, text VACHAR2(80));
?。?)將兩個示例文檔置入該表:
INSERT INTO docs VALUES (1,'the first doc'); INSERT INTO docs VALUES (2,'the second doc'); COMMIT;
(3)使用Oracle Text Manager來創建和修改首選項,首選項將與索引相關聯。
?。?)使用Oracle Text Manager創建文本索引。另外,可以輸入以下使用默認首選項的 SQL 語句:
CREATE INDEX doc_index ON docs(text) INDEXTYPE IS CTXSYS.CONTEXT;
?。?)使用 CONTAINS 函數,發出基于內容的文檔查詢。例如:
SELECT id FROM docs WHERE CONTAINS (text, 'first') > 0;
這將在文本列包含單詞 first (即文檔1) 的 docs 中查找所有行。語句中的>0部分是有效的Oracle SQL所必需的,Oracle SQL不支持函數的布爾返回值。
以上只是一個簡單的示例,旨在給出使用Oracle Text建立全文索引的完整步驟,歸納起來如下:
(1)建表并裝載文本(包含帶有需要檢索的文本字段)
(2)配置索引
?。?)建立索引
?。?)發出查詢
?。?)索引維護:同步與優化(將在后面介紹)
3 文本裝載
要實現文本的全文檢索首先必須把正確的文本加載到數據庫表中,默認的建立索引行為要求將文檔裝載在文本列中,盡管可以用其它方式 (包括文件系統和 URL 形式)存儲文檔 (在"數據存儲"選項進行設置)。默認情況下,系統應該將文檔裝載在文本列中。文本列可以是VARCHAR2、CLOB、BLOB、CHAR或BFILE。注意,只有在將Oracle7系統移植到Oracle8的情況下才支持用LONG和LONG RAW 這兩個相反的列類型存儲文本。不能為列類型NCLOB、DATE和NUMBER建立索引。
關于文檔格式,因為系統能為包括HTML、PDF、Microsoft Word和純文本在內的大多數文檔格式建立索引,可以將其中的任何文檔類型裝載到文本列中(在"過濾器"選項中設置)。有關所支持的文檔格式的詳細信息,可以參閱Oracle Text User's Guide and Reference 中的附錄"Supported Filter Formats"。
數據存儲:關于列中存儲文本的位置和其他信息。默認情況下,文本直接存儲到列中,表中的每行都表示一個單獨的完整文檔。其他數據存儲位置包括存儲在單獨文件中或以其 URL 標識的 Web 頁上。七個基本對象包括:Default_Datastore、Detail_Datastore、Direct_Datastore、File_Datastore、Multi_Column_Datastore 、URL_Datastore、User_Datastore,。
?。?)文檔段組(Section Group)類
文檔段組是用于指定一組文檔段的對象。必須先定義文檔段,然后才能使用索引通過 WITHIN 運算符在文檔段內進行查詢。文檔段定義為文檔段組的一部分。包含七個基本對象:AUTO_SECTION_GROUP、BASIC_SECTION_GROUP、HTML_SECTION_GROUP、NEWS_SECTION_GROUP、NULL_SECTION_GROUP、XML_SECTION_GROUP、PATH_SECTION_GROUP。
SELECT SCORE(1) title from news WHERE CONTAINS(text, 'about(politics)', 1) > 0;
[NextPage]
6 顯示滿足查詢條件的文檔
通常,通過使用Oracle Text查詢應用程序,用戶可查看查詢所返回的文檔。用戶從命中列表中選擇一個文檔,然后應用程序以某種形式顯示該文檔。通過Oracle Text,可以用不同的方式再現文檔。例如,可以通過突出顯示查詢詞來顯示文檔。突出顯示的查詢詞可以是相關詞查詢中的詞,也可以是英文 ABOUT 查詢中的主題詞。