建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

?和記娛h188下載app:Oracle9i的全文檢索技術(1)全文檢索

?

擇要 全文檢索技巧是智能信息治理的關鍵技巧之一,Oracle Text作為Oracle9i的一個組件,供給了強大年夜的全文檢索功能,用Oracle9i做后臺數據庫,就可以充分使用其全文檢索技巧,構建繁雜的大年夜型文檔治理系統。本文主要先容了Oracle Text的體系布局及其應用。

關鍵詞 Oracle Text 全文檢索

Oracle不停致力于全文檢索技巧的鉆研,當Oracle9i Rlease2宣布之時,Oracle數據庫的全文檢索技巧已經異常完美,Oracle Text使Oracle9i具備了強大年夜的文本檢索能力和智能化的文本治理能力。Oracle Text是Oracle9i采納的新名稱,在Oracle8/8i中它被稱作Oracle interMedia Text,在Oracle8曩昔它的名稱是Oracle ConText Cartridge。應用Oracle9i和Oracle Text,可以方便而有效地使用標準的SQL對象來構建基于文本的新的開拓對象或對現有利用法度榜樣進行擴展。利用法度榜樣開拓職員可以在任何應用文本的Oracle數據庫利用法度榜樣中充分使用Oracle Text搜索,利用范圍可所以現有利用法度榜樣中可搜索的注釋字段,也可是實現涉及多種文檔款式和繁雜搜索標準的大年夜型文檔治理系統。Oracle Text支持Oracle數據庫所支持的大年夜多半說話的基礎全文搜索功能。本文將先容若何應用Oracle9?和記娛h188下載appi的全文檢索技巧來為自己的利用供給一個優秀的辦理規劃。

1 Oracle Text的體系架構

下圖是Oracle Text的體系架構。

圖1 Oracle Text的體系架構

以上面的體系架構圖為根基,Oracle Text 索引文檔時所應用的主要邏輯步驟如下:

(1)數據存儲邏輯搜索表的所有行,并讀取列中的數據。平日,這只是列數據,但有些數據存儲應用列數據作為文檔數據的指針。例如,URL_DATASTORE 將列數據作為 URL 應用。

(2)過濾器提取文檔數據并將其轉換為文本表示要領。存儲二進制文檔 (如 Word 或 Acrobat 文件) 時必要這樣做。過濾器的輸出不必是純文本款式 -- 它可所以 XML 或 HTML 之類的文本款式。

(3)分段器提取過濾器的輸出信息,并將其轉換為純文本。包括 XML 和 HTML 在內的不合文本款式有不合的分段器。轉換為純文本涉及檢測緊張文檔段標記、移去弗成見的信息和文本從新款式化。

(4)詞法闡發器提取分段器中的純文本,并將其拆分為不繼續的標記。既存在空缺字符分隔說話應用的詞法闡發器,也存在分段繁雜的亞洲說話應用的專門詞法闡發器。

(5)索引引擎提取詞法闡發器中的所有標記、文檔段在分段器中的偏移量以及被稱為非索引字的低信息含量字列表,并構建反向索引。倒排索引存儲標記和含有這些標記的文檔。

2 簡單的示例

這里先給出一個簡單示例說使用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法度榜樣包。

應用Oracle Text的步驟:

(1)創建表來保存某些文檔。該示例應用一個主關鍵字列來標識每個文檔,應用?和記娛h188下載app一個小的VARCHAR2列來保存每個文檔。

關于文檔款式,由于系統能為包括HTML、PDF、Microsoft Word和純文本在內的大年夜多半文檔款式建立索引,可以將此中的任何文檔類型裝載到文本列中(在"過濾器"選項中設置)。有關所支持的文檔款式的具體信息,可以參閱Oracle Text User's Guide and Reference 中的附錄"Supported Filter Formats"。

裝載措檀越要有以下幾種:

(1)SQL INSERT 語句

(2)ctxload 可履行文件

(3)SQL*Loader

(4)從 BFILE 中裝載 LOB 的 DBMS_LOB.LOADFROMFILE() PL/SQL 歷程

(5)Oracle Call Interface

4 為文本建立索引

文本裝入文本列后,就可以創建Oracle Text索引。文檔以許多不合規劃、款式和說話存儲。是以,每個 Oracle Text 索引有許多必要設置的選項,以針對特定環境設置設置設備擺設擺設索引?和記娛h188下載app。創建索引時,Oracle Text可應用多少個默認值,但在大年夜多半環境下要求用戶經由過程指定首選項來設置設置設備擺設擺設索引。

每個索引的許多選項構成功能組,稱為"類",每個類集中表現設置設置設備擺設擺設的某一方面,可以覺得這些類便是與文檔數據庫有關的一些問題。例如:數據存儲、過濾器、詞法闡發器、相關詞表、存儲等。

每個類具有許多預定義的行徑,稱之為工具。每個工具是類問題可能具有的謎底,并且大年夜多半工具都包孕有屬性。經由過程屬性來定制工具,從而使對索引的設置設置設備擺設擺設加倍多變以適應于不合的利用。

(1)存儲(Storage)類

存儲類指定構成Oracle Text索引的數據庫表和索引的表空間參數和創建參數。它僅有一個基礎工具:BASIC_STORAGE,其屬性包括:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause。

(2)數據存儲(Datastore)類

(7)過濾器(Filter)類

過濾器確定若何過濾文本以建?和記娛h188下載app立索引。可以應用過濾器對翰墨處置懲罰器處置懲罰的文檔、款式化的文檔、純文本和 HTML 文檔建立索引,包括5個基礎工具:CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER。

(8)非索引字表(Stoplist)類

非索引字表類是用以指定一組不編入索引的單詞 (稱為非索引字)。有兩個基礎工具:BASIC_STOPLIST (一種說話中的所有非索引字) 、 MULTI_STOPLIST (包孕多種說話中的非索引字的多說話非索引字表)。

5 查詢

建立了索引,就可以應用 SELECT 語句中的 CONTAINS 運算符發出文本查詢。應用 CONTAINS 可以進行兩種查詢:單詞查詢和ABOUT查詢。

5.1 詞查詢示例

詞查詢是對輸入到 CONTAINS 運算符中單引號間的正確單詞或短語的查詢。在以下示例中,我們將查找文本列中包孕 oracle 一詞的所有文檔。每行的分值由應用標簽 1 的 SCORE 運算符選定:

SELECT SCORE(1) title from news WHERE CONTAINS(text, 'oracle', 1) > 0;

在查詢表達式中,可以應用 AND 和 OR 等文本運算符來獲取不合結果。還可以將布局性謂詞添加到 WHERE 子句中。可以應用 count(*)、CTX_QUERY.COUNT_HITS 或 CTX_QUERY.EXPLAIN 來謀略查詢的射中 (匹配) 數目。

5.2 ABOUT查詢示例

在所有說話中,ABOUT查詢增添了某查詢所返回的相關文檔的數目。在英語中,ABOUT 查詢可以應用索引的主題詞組件,該組件在默認環境下創建。這樣,運算符將根據查詢的觀點返回文檔,而不是僅依據所指定的正確單詞或短語。例如,以下查詢將查找文本列中關于主題 politics 的所有文檔,而不是僅包孕 politics 一詞的文檔:

同步(sync):將新的term 保存到I表;

優化(optimize):清除I表的垃圾,主如果將已經被刪除的term從I表刪除。

Oracle供給了一個所謂的ctx server來做這個同步和優化的事情,只必要在后臺運行這個進程,它會監視數據的變更,及時進行同步。別的,也可以用以下的job來完成(該job要建在和表同一個用戶下):

create?和記娛h188下載app or replace procedure sync

is

begin

execute immediate

'alter index myindex rebuild online' ||

' parameters ( ''sync'' )' ;

execute immediate

'alter index myindex rebuild online' ||

' parameters ( ''optimize full maxtime unlimited'' )' ;

end sync;

/

Set ServerOutput on

declare

v_job number;

begin

Dbms_Job.Submit

(

job => v_job,

what => 'sync;',

next_date => sysdate, /* default */

interval => 'sysdate + 1/720' /* = 1 day / ( 24 hrs * 30 min) = 2 mins */

);

Dbms_Job.Run ( v_job );

Dbms_Output.Put_Line ( 'Submitted as job # ' || to_char ( v_job ) );

end;

/

job的SYSDATE + (1/720)是指每隔2分鐘同步一次。詳細的光陰距離,可以根據自己的利用的必要而定。

8 小結

文本對付各類規模的公司、機構組織來說,都是包孕浩繁富厚信息的最有效載體,Oracle Text的推出,標志著Oracle供給了一套嶄新的技巧,可以便捷安然的用于治理企業的文本信息。Oracle Text使利用法度榜樣開拓者可以透明地將全文檢索能力加入到基于SQL的利用法度榜樣中,Oracle Text也是其他Oracle產品的核心組件,比如Oracle9iAS Portal,Oracle eBusiness Suite,Oracle Ultra Search和Oracle Internet File System等。機動運用Oracle Text供給的全文檢索技巧,就可以使自己的利器具備強大年夜的全文檢索能力。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
快乐时时彩走势图开奖号码 今天福建11选5开奖结果 极速十一选五手机助手 河北时时彩 pk10开奖号码 nba中文网 安徽十一选五 天天乐棋牌网站 3d开奖结果查询 全民麻将看牌器辅助作弊器