Oracle的全文檢索技術(shù)_第1頁
Oracle的全文檢索技術(shù)_第2頁
Oracle的全文檢索技術(shù)_第3頁
Oracle的全文檢索技術(shù)_第4頁
Oracle的全文檢索技術(shù)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.歡迎交流: HYPERLINK mailto:wsf111sina wsf111sina或seervip.163 :.;Oracle的全文檢索技術(shù)Oracle不斷努力于全文檢索技術(shù)的研討,當Oracle9i Rlease2發(fā)布之時,Oracle數(shù)據(jù)庫的全文檢索技術(shù)曾經(jīng)非常完美,Oracle Text使Oracle9i具備了強大的文本檢索才干和智能化的文本管理才干。Oracle Text是Oracle9i采用的新稱號,在Oracle8/8i中它被稱作Oracle interMedia Text。運用Oracle Text,可以方便而有效地利用規(guī)范的SQL工具來構(gòu)建基于文本的新的開發(fā)工具或?qū)ΜF(xiàn)有

2、運用程序進展擴展。運用程序開發(fā)人員可以在任何運用文本的Oracle數(shù)據(jù)庫運用程序中充分利用Oracle Text搜索,運用范圍可以是現(xiàn)有運用程序中可搜索的注釋字段,也可是實現(xiàn)涉及多種文檔格式和復(fù)雜搜索規(guī)范的大型文檔管理系統(tǒng)。Oracle Text支持Oracle數(shù)據(jù)庫所支持的大多數(shù)言語的根本全文搜索功能。雖然大多數(shù)大型數(shù)據(jù)庫都支持全文檢索,但Oracle在這方面無疑是最出色的。Oracle能搜索多種格式的文檔,如Word,Execl,PowerPoint,Html,PDF等等。但在運用中也發(fā)現(xiàn)有遺憾的地方,Oracle Text無論運用何種過濾器INSO_FILTER或NULL_FILTER及

3、何種詞法分析器BASIC_LEXER, CHINESE_VGRAM_LEXER還是CHINESE_LEXER都不能檢索出中文內(nèi)容的文本文檔TXT,RTF。1 Oracle Text的體系架構(gòu)以下圖是Oracle Text的體系架構(gòu):圖1 Oracle Text的體系架構(gòu)Oracle Text 索引文檔時所運用的主要邏輯步驟如下:1數(shù)據(jù)存儲邏輯搜索表的一切行,并讀取列中的數(shù)據(jù)。通常,這只是列數(shù)據(jù),但有些數(shù)據(jù)存儲運用列數(shù)據(jù)作為文檔數(shù)據(jù)的指針。例如,URL_DATASTORE 將列數(shù)據(jù)作為 URL 運用。假設(shè)對本地文件進展檢索,只需指定DATASTORE中FILE_DATASTORE參數(shù)為文件的途徑

4、即可。2過濾器提取文檔數(shù)據(jù)并將其轉(zhuǎn)換為文本表示方式。存儲二進制文檔 (如 Word 或 Acrobat 文件) 時需求這樣做。過濾器的輸出不用是純文本格式 - 它可以是 XML 或 HTML 之類的文本格式。3分段器提取過濾器的輸出信息,并將其轉(zhuǎn)換為純文本。包括 XML 和 HTML 在內(nèi)的不同文本格式有不同的分段器。轉(zhuǎn)換為純文本涉及檢測重要文檔段標志、移去不可見的信息和文本重新格式化。4詞法分析器提取分段器中的純文本,并將其拆分為不延續(xù)的標志。既存在空白字符分隔言語運用的詞法分析器,也存在分段復(fù)雜的亞洲言語運用的專門詞法分析器。5索引引擎提取詞法分析器中的一切標志、文檔段在分段器中的偏移量以

5、及被稱為非索引字的低信息含量字列表,并構(gòu)建反向索引。倒排索引存儲標志和含有這些標志的文檔。歸納起來如下:1建表并裝載文本包含帶有需求檢索的文本字段2配置索引3建立索引4發(fā)出查詢5索引維護:同步與優(yōu)化將在后面引見文本裝載要實現(xiàn)文本的全文檢索首先必需把正確的文本加載到數(shù)據(jù)庫表中,默許的建立索引行為要求將文檔裝載在文本列中,雖然可以用其它方式 (包括文件系統(tǒng)和 URL 方式)存儲文檔 (在數(shù)據(jù)存儲選項進展設(shè)置)。默許情況下,系統(tǒng)應(yīng)該將文檔裝載在文本列中。文本列可以是VARCHAR2、CLOB、BLOB、CHAR或BFILE。留意,只需在將Oracle7系統(tǒng)移植到Oracle8的情況下才支持用LONG

6、和LONG RAW 這兩個相反的列類型存儲文本。不能為列類型NCLOB、DATE和NUMBER建立索引。關(guān)于文檔格式,由于系統(tǒng)能為包括HTML、PDF、Microsoft Word和純文本在內(nèi)的大多數(shù)文檔格式建立索引,可以將其中的任何文檔類型裝載到文本列中(在過濾器選項中設(shè)置)。有關(guān)所支持的文檔格式的詳細信息,可以參閱Oracle Text Users Guide and Reference 中的附錄Supported Filter Formats。裝載方法主要有以下幾種:1SQL INSERT 語句2ctxload 可執(zhí)行文件3SQL*Loader4從 BFILE 中裝載 LOB 的 DBM

7、S_LOB.LOADFROMFILE() PL/SQL 過程5Oracle Call Interface建立索引文本裝入文本列后,就可以創(chuàng)建Oracle Text索引。文檔以許多不同方案、格式和言語存儲。因此,每個 Oracle Text 索引有許多需求設(shè)置的選項,以針對特定情況配置索引。創(chuàng)建索引時,Oracle Text可運用假設(shè)干個默許值,但在大多數(shù)情況下要求用戶經(jīng)過指定首選項來配置索引。每個索引的許多項選擇項組勝利能組,稱為類,每個類集中表達配置的某一方面,可以以為這些類就是與文檔數(shù)據(jù)庫有關(guān)的一些問題。例如:數(shù)據(jù)存儲、過濾器、詞法分析器、相關(guān)詞表、存儲等。每個類具有許多預(yù)定義的行為,稱之

8、為對象。每個對象是類問題能夠具有的答案,并且大多數(shù)對象都包含有屬性。經(jīng)過屬性來定制對象,從而使對索引的配置更加多變以順應(yīng)于不同的運用。1存儲Storage類存儲類指定構(gòu)成Oracle Text索引的數(shù)據(jù)庫表和索引的表空間參數(shù)和創(chuàng)建參數(shù)。它僅有一個根本對象:BASIC_STORAGE,其屬性包括:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause。2數(shù)據(jù)存儲Datastore類數(shù)據(jù)存儲:關(guān)于列中存儲文本的位置和其他信息。默許情況下,文本直接存儲到列中,表中的每行都表示一

9、個單獨的完好文檔。其他數(shù)據(jù)存儲位置包括存儲在單獨文件中或以其 URL 標識的 Web 頁上。七個根本對象包括:Default_Datastore、Detail_Datastore、Direct_Datastore、File_Datastore、Multi_Column_Datastore 、URL_Datastore、User_Datastore,。3文檔段組Section Group類文檔段組是用于指定一組文檔段的對象。必需先定義文檔段,然后才干運用索引經(jīng)過 WITHIN 運算符在文檔段內(nèi)進展查詢。文檔段定義為文檔段組的一部分。包含七個根本對象:AUTO_SECTION_GROUP、BASI

10、C_SECTION_GROUP、HTML_SECTION_GROUP、NEWS_SECTION_GROUP、NULL_SECTION_GROUP、XML_SECTION_GROUP、PATH_SECTION_GROUP。4相關(guān)詞表Wordlist類相關(guān)詞表標識用于索引的詞干和模糊匹配查詢選項的言語,只需一個根本對象BASIC_WORDLIST,其屬性有:Fuzzy_Match、Fuzzy_Numresults、Fuzzy_Score、Stemmer、Substring_Index、Wildcard_Maxterms、Prefix_Index、Prefix_Max_Length、Prefix_M

11、in_Length。5索引集Index Set索引集是一個或多個Oracle 索引 (不是Oracle Text索引) 的集合,用于創(chuàng)建 CTXCAT類型的Oracle Text索引,只需一個根本對象BASIC_INDEX_SET。6詞法分析器Lexer類詞法分析器類標識文本運用的言語,還確定在文本中如何標識標志。默許的詞法分析器是英語或其他西歐言語,用空格、規(guī)范標點和非字母數(shù)字字符標識標志,同時禁用大小寫。包含8個根本對象:BASIC_LEXER、CHINESE_LEXER、CHINESE_VGRAM_LEXER、JAPANESE_LEXER、JAPANESE_VGRAM_LEXER、KOR

12、EAN_LEXER、KOREAN_MORPH_ LEXER、MULTI_LEXER。7過濾器Filter類過濾器確定如何過濾文本以建立索引??梢赃\用過濾器對文字處置器處置的文檔、格式化的文檔、純文本和 HTML 文檔建立索引,包括5個根本對象:CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER。8非索引字表Stoplist類非索引字表類是用以指定一組不編入索引的單詞 (稱為非索引字)。有兩個根本對象:BASIC_STOPLIST (一種言語中的一切非索引字) 、 MULTI_STOPLIST (包含多

13、種言語中的非索引字的多言語非索引字表)。查詢建立了索引,就可以運用 SELECT 語句中的 CONTAINS 運算符發(fā)出文本查詢。運用 CONTAINS 可以進展兩種查詢:單詞查詢和ABOUT查詢。51 詞查詢例如詞查詢是對輸入到 CONTAINS 運算符中單引號間的準確單詞或短語的查詢。在以下例如中,我們將查找文本列中包含 oracle 一詞的一切文檔。每行的分值由運用標簽 1 的 SCORE 運算符選定:SELECT SCORE(1) title from news WHERE CONTAINS(text, oracle, 1) 0;在查詢表達式中,可以運用 AND 和 OR 等文本運算符

14、來獲取不同結(jié)果。還可以將構(gòu)造性謂詞添加到 WHERE 子句中。可以運用 count(*)、CTX_QUERY.COUNT_HITS 或 CTX_QUERY.EXPLAIN 來計算查詢的命中 (匹配) 數(shù)目。52 ABOUT查詢例如在一切言語中,ABOUT查詢添加了某查詢所前往的相關(guān)文檔的數(shù)目。在英語中,ABOUT 查詢可以運用索引的主題詞組件,該組件在默許情況下創(chuàng)建。這樣,運算符將根據(jù)查詢的概念前往文檔,而不是僅根據(jù)所指定的準確單詞或短語。例如,以下查詢將查找文本列中關(guān)于主題 politics 的一切文檔,而不是僅包含 politics 一詞的文檔:SELECT SCORE(1) title

15、from news WHERE CONTAINS(text, about(politics), 1) 0;索引維護索引建好后,假設(shè)表中的數(shù)據(jù)發(fā)生變化,比如添加或修正了記錄,怎樣辦?由于對表所發(fā)生的任何DML語句,都不會自動修正索引,因此,必需定時同步(sync)和優(yōu)化(optimize)索引,以正確反映數(shù)據(jù)的變化。在索引建好后,可以在該用戶下查到Oracle自動產(chǎn)生了以下幾個表:假設(shè)索引名為myindex:DR$myindex$I,DR$myindex$K,DR$myindex$R,DR$myindex$N其中以I表最重要,可以查詢一下該表:select token_text, token_c

16、ount from DR$ myindex $I where rownumcreate user mini identified by mini;SQLalter user mini default tablespace EXAMPLE;SQL grant connect,resource to mini;SQL grant ctxapp to mini;SQL alter user mini default role all;創(chuàng)建表:用mini用戶登錄。SQL create table mytest ( tid number primary key, fname varchar2(100),

17、 btext BLOB)錄入數(shù)據(jù):用system用戶登錄-創(chuàng)建目錄(數(shù)據(jù)庫效力器)SQL create or replace directory BLOB_FILE_DIR as d:test;SQL grant read on directory BLOB_FILE_DIR to mini;用mini用戶登錄-創(chuàng)建過程CREATE OR REPLACE PROCEDURE insert_file (TID number,FILENAME VARCHAR2) ISF_LOB BFILE;B_LOB BLOB;BEGININSERT INTO MYTEST(tid,fname,btext)VAL

18、UES (TID,FILENAME,EMPTY_BLOB () RETURN btext INTO B_LOB;F_LOB:= BFILENAME (BLOB_FILE_DIR, FILENAME);DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);DBMS_LOB.LOADFROMFILE (B_LOB,F_LOB,DBMS_LOB.GETLENGTH (F_LOB),1,1);DBMS_LOB.FILECLOSE (F_LOB);COMMIT;END;SQL exec insert_file(1,test.doc);設(shè)置索引參考項SQL b

19、eginctx_ddl.create_preference(cnlex,CHINESE_VGRAM_LEXER);ctx_ddl.create_preference(mywordlist, BASIC_WORDLIST);ctx_ddl.set_attribute(mywordlist,PREFIX_INDEX,TRUE);ctx_ddl.set_attribute(mywordlist,PREFIX_MIN_LENGTH,1);ctx_ddl.set_attribute(mywordlist,PREFIX_MAX_LENGTH, 5);ctx_ddl.set_attribute(myword

20、list,SUBSTRING_INDEX, YES);end;(假設(shè)數(shù)據(jù)庫的字符集是UTF8,建議運用CHINESE_LEXER詞法分析器)-查看自定義的參考項SQLselect * from ctx_user_preferences;創(chuàng)建索引SQLcreate index idx_mytest on mytest(btext) indextype is ctxsys.context parameters (DATASTORE CTXSYS.DIRECT_DATASTORE FILTER CTXSYS.INSO_FILTER LEXER MINILEX WORDLIST MINI.MYWORDLIST);可以運用ctxcat索引類型,但好似不支持BLOB型-查看SQLselect * from dr$idx_mytest$I; SQLselect * from mytest where contains(btext

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論