亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Oracle全文檢索主要技術(shù)初探

        2009-03-06 05:17:52曾妮麗
        管理觀察 2009年5期
        關(guān)鍵詞:全文檢索

        曾妮麗 陳 林

        摘 要:全文檢索技術(shù)是信息管理的關(guān)鍵技術(shù)之一, Oracle Text作為Oracle的一個(gè)組件, 提供了強(qiáng)大的全文檢索功能,用Oracle做后臺(tái)數(shù)據(jù)庫, 就可以充分利用其全文檢索技術(shù), 構(gòu)建復(fù)雜的大型文檔管理系統(tǒng)。本文主要介紹了全文檢索的原理,Oracle Text全文檢索的主要技術(shù)及實(shí)現(xiàn)。

        關(guān)鍵詞:Oracle Text 全文檢索 索引

        一、引言

        隨著信息技術(shù)的飛速發(fā)展,各行各業(yè)越來越靠信息系統(tǒng),面對越來越多的數(shù)據(jù),如何對信息進(jìn)行有效組織和檢索越來越受到人們的重視。目前各大數(shù)據(jù)庫廠商的數(shù)據(jù)庫版本中都帶有全文檢索功能,如SQL Server自7.0以后提供了全文檢索的功能;Oracle自7.3開始提供文本查詢功能。在Oracle8i中,文本檢索和媒體管理結(jié)合在interMedia中,并且其需要單獨(dú)安裝;從Oracle9i開始,文本檢索從interMedia中分離出來,命名為Oracle Text,,在標(biāo)準(zhǔn)和企業(yè)級數(shù)據(jù)庫版本中為默認(rèn)組件不再需要單獨(dú)的許可。本文主要對Oracle9i的Oracle Text中所涉及的主要技術(shù)進(jìn)行探討。

        二、全文檢索技術(shù)

        1.概念

        全文檢索就是指計(jì)算機(jī)索引程序通過掃描文章中的每一個(gè)詞,對每一個(gè)詞建立索引,當(dāng)用戶查詢時(shí),檢索程序就根據(jù)事先建立好的索引進(jìn)行查找,并將查找的結(jié)果反饋給用戶的檢索方式。

        2..全文檢索系統(tǒng)結(jié)構(gòu)圖(如圖1)

        3.主要技術(shù)

        全文檢索主要由兩方面的核心技術(shù)結(jié)合而實(shí)現(xiàn):一是建立和維護(hù)索引庫,二是提供快速有效的檢索機(jī)制。

        (1) 文本分析

        作為全文檢索技術(shù)的重要組成部分,中文分詞技術(shù)和各種常見格式文檔的處理方式是研究和應(yīng)用必然涉及的兩個(gè)方面。目前使用最為廣泛的中文分詞方法是詞表切分法,這種方法的核心是詞表的匹配方法。目前,針對各種格式文檔的處理,其主要實(shí)現(xiàn)方式是將各種格式文檔先轉(zhuǎn)換為某種中間格式,然后對中間格式進(jìn)行索引和查詢。

        (2)索引

        在中文系統(tǒng)中,基本元素可以是單個(gè)漢字字符,也可以是詞。因此存在兩種基本的索引庫結(jié)構(gòu),即基于字表的索引庫和基于詞表的索引庫。字表法和詞表法各有優(yōu)缺點(diǎn)。前者實(shí)用性很強(qiáng),構(gòu)建直觀方便。檢索方面,比較實(shí)用的是“首字直接匹配法”。詞表法多集中在中文自動(dòng)分詞研究,自然語言統(tǒng)計(jì)分析等方面。全文檢索中索引的組織方法有兩種,即正排表和倒排表。目前通常都采用倒排表進(jìn)行組織。

        索引創(chuàng)建過程不需要排序,分為如下兩步。第一步分析源文檔,產(chǎn)生臨時(shí)的中間文件,我們稱為分析過程。第二步處理臨時(shí)文件,依次從臨時(shí)文件中讀取每個(gè)字符出現(xiàn)在每一篇文章中的數(shù)據(jù)信息,生成最終的倒排文件,在這里稱為創(chuàng)建過程。生成的最終倒排文件中包含每個(gè)字符出現(xiàn)在所有文檔中的信息。

        (3)檢索

        從文檔的內(nèi)容上,信息檢索有四種傳統(tǒng)模型:布爾模型(Boolean Model)、向量空間模型(Vector Space Model,VSM)、概率模型(Probabilistic Model)和邏輯模型(Logic Model)。在四種傳統(tǒng)模型的基礎(chǔ)上,又演變出了各種其他模型。

        三、Oracle Text 全文檢索技術(shù)及實(shí)現(xiàn)

        要使用Oracle Text,必須具有CTXAPP角色或者是CTXSYS用戶。Oracle Text為系統(tǒng)管理員提供CTXSYS用戶,為應(yīng)用程序開發(fā)人員提供CTXAPP角色。CTXSYS用戶可執(zhí)行以下任務(wù):啟動(dòng)Oracle Text服務(wù)器,執(zhí)行CTXAPP角色的所有任務(wù)。具有CTXAPP角色的用戶可執(zhí)行以下任務(wù): 創(chuàng)建索引,管理 Oracle Text 數(shù)據(jù)字典,包括創(chuàng)建和刪除首選項(xiàng),進(jìn)行Oracle Text 查詢,使用 Oracle Text PL/SQL程序包。

        以下通過簡單的實(shí)例從文本裝載,索引創(chuàng)建和查詢幾個(gè)方面介紹Oracle Text的全文檢索的關(guān)鍵技術(shù)。

        1.裝載文本

        Oracle Text默認(rèn)情況是將文本存儲(chǔ)在文本列.列的類型可以是VARCHAR2, CLOB, BLOB, CHAR or BFILE,裝載的文本可以是HTML, PDF, Word和純文本等不同格式.裝載文本主要有以下幾種模式:

        (1) 利用SQL*Loader裝載文檔

        下面以實(shí)例進(jìn)行介紹,將不同格式的文檔從操作系統(tǒng)裝載到一個(gè)BLOB列,需要兩個(gè)步驟:

        首先是創(chuàng)建數(shù)據(jù)庫表

        CREATE TABLE articles_formatted (

        ARTICLE_IDNUMBER PRIMARY KEY ,

        AUTHORVARCHAR2(30),

        TEXT BLOB );

        然后是發(fā)出SQL*Loader命令

        使用SQL*Loader需要一個(gè)控制文件(設(shè)為load.ctl)和裝載信息文件(設(shè)為load.data).其中l(wèi)oad.ctl說明了load.data文件的格式, loader2.data中包含了需要加載的文件的信息.可以使用逗號(hào)作為定界符.

        Load1.ctl:

        Load data

        INFILE 'loader2.data'注釋:要導(dǎo)入的文件

        INTO TABLE articles_formatted 注釋:指定裝入的表

        APPEND注釋: 原先的表有數(shù)據(jù) 就加在后面

        FIELDS TERMINATED BY ','注釋:以逗號(hào)作為定界符(如要裝載的數(shù)據(jù)是”abc,d,e”,在表中結(jié)果是”abcde”)

        (article_id SEQUENCE (MAX,1), 注釋:以下是表的字段, FILLER 關(guān)鍵字 此列的數(shù)值不會(huì)被裝載

        author CHAR(30),

        ext_fname FILLER CHAR(80),

        text LOBFILE(ext_fname) TERMINATED BY EOF)

        load2.data:

        1,JohnHancock,e:1LoadingMethods.txt,

        2,張三,e:1oracle全文檢索技術(shù).doc,

        3,曉月,e:1全文檢索原理及實(shí)現(xiàn).pdf,

        然后就可以執(zhí)行以下命令

        sqlldr userid=ctxsys/ctxsys control=load.ctl data=load.data log=load.log

        (2)使用DBMS_L OB裝載文檔

        SQL*Loader雖然可以用于批量的裝載文檔,但是不能將文檔文件載入已存在的行內(nèi)。此時(shí)就可以使用DBMS_L0B。這首先需要在數(shù)據(jù)庫中創(chuàng)建一個(gè)目錄(這要求用戶有CREATE ANY DIRECTORY的權(quán)限),建立一個(gè)你要加載的文件所在目錄的別名。然后調(diào)用DBMS. FRROMFILE()函數(shù)。需要注意的是在進(jìn)行中文檢索時(shí),加載文件之后,還需要將所加載的文件的信息,如:格式、字符集、語言等信息添加到相應(yīng)的列中。

        (3)使用ctxload裝載文檔

        語法格式:

        text. . .

        col_name:列名

        doc_data: 存儲(chǔ)在列中的結(jié)構(gòu)化數(shù)據(jù)

        text:被裝載的文檔內(nèi)容或文檔名稱

        (4) SQL INSERT 語句

        2.索引

        Oracle Text的索引在結(jié)構(gòu)上和Oracle中的其他索引完全不同。在創(chuàng)建索引過程中,可以對數(shù)據(jù)存儲(chǔ),分段器,詞法分析器,過濾器,相關(guān)詞表,停詞表或存儲(chǔ)首選項(xiàng)等參數(shù)進(jìn)行設(shè)置。對于英文的檢索,不需要設(shè)置首選項(xiàng),完全使用默認(rèn)值就可以了。但是對于其他語種文檔的檢索,則必須進(jìn)行設(shè)置。因?yàn)镺racle Text在創(chuàng)建索引時(shí),需要知道該文檔的格式、字符集、語種等信息。首選項(xiàng)的設(shè)置是通過CTX—DDL包中ctx_dd1.Create_preference和ctx_dd1.Set_attribute過程來進(jìn)行的。

        (1)數(shù)據(jù)存儲(chǔ)(datastore)

        數(shù)據(jù)存儲(chǔ)首選項(xiàng)向Oracle通告源數(shù)據(jù)的組織結(jié)構(gòu)。數(shù)據(jù)存儲(chǔ)參數(shù)類型主要有以下幾種.

        DIRECT_DATASTORE:是默認(rèn)的數(shù)據(jù)存儲(chǔ)命名,大多數(shù)索引操作都使用它DIRECT_DATASTORE:數(shù)據(jù)被存儲(chǔ)在文本列中,文檔由詳表中的一行或多行組成,頭信息存儲(chǔ)在主表中

        FILE_DATASTORE:數(shù)據(jù)存儲(chǔ)在操作系統(tǒng)的文件系統(tǒng)中,文件名存儲(chǔ)在文本列URL_DATASTORE:數(shù)據(jù)存儲(chǔ)在內(nèi)聯(lián)網(wǎng)或互聯(lián)網(wǎng)中的外部文件中,URL存儲(chǔ)在文本列中

        USER_DATASTORE:通過用戶定義的存儲(chǔ)過程合成文件.

        (2)過濾器(Filter)

        通過過濾器,可以不考慮源文檔的類型,按照相同的方式將文本加入到索引.可以用以下對象創(chuàng)建過濾器參數(shù)。

        NULL_FILTER:主要針對存儲(chǔ)在文本列的純文本文件

        INSO_FILTER:是能夠過濾大部分帶格式文件的通用過濾器

        USER_FILTER:創(chuàng)建用戶自定義的過濾器。

        CHARSET_FILTER:能夠?qū)⑽臋n從一種字符集轉(zhuǎn)換成數(shù)據(jù)庫字符集。

        (3)分段器(Sectioner)

        分段器從文檔標(biāo)記中分離出文本,文本傳遞到詞法分析器分離出來的是標(biāo)記符,而把標(biāo)記保存起來是為了方便分段檢索.有了文檔段分組,就可以在特別的文檔段進(jìn)行搜索.

        (4)詞法分析器(Lexer)

        標(biāo)志符產(chǎn)生是查找,分級,分類以及生成文檔的主題詞或要點(diǎn)的關(guān)鍵詞.詞法分析器是Oracle生成標(biāo)志符的方法.其主要包含以下幾種類型。

        BASIC_LEXER適用于英語和其他單字節(jié)語種

        CHINESE_VGRAM_LEXER適用于被索引列是英文

        MULTI_LEXER被索引列的文檔列具有不同的語種.

        如果文本列都是一種語言,可以使用一種Lexer設(shè)置,但我們檢索的文檔可能不一定是同一種語言的,所以常常要使用MULTI—LEXER,把索引設(shè)置為多種語言??梢栽O(shè)置一種基本檢索語言,多種子檢索語言。

        (5)相關(guān)詞表(Wordlist)

        利用相關(guān)詞表可以進(jìn)行模糊檢索和詞干檢索,相關(guān)詞表只有BASIC_WORDLIST一種類型.

        (6)非索引字表(Stoplist)

        有些詞,如the,of,and加入到索引中是完全沒有用的,它對于相關(guān)性沒有任何幫助,由此Oracle允許添加非索引字表.

        如果只是進(jìn)行普通的檢索,設(shè)置datastore、FILTER、Lexer三個(gè)參數(shù)就可以了。下面以匿名存儲(chǔ)過程的形式給出了一個(gè)示例,設(shè)置英語為基本檢索語言,簡體中文為子檢索語言。

        begin

        ctx_dd1.create_preference(‘My_File_DATASTORE,‘DIRECT_DATASTORE );

        ctx_dd1.create_preference(‘My_ENG_Lexer,‘BASIC_LEXER);

        ctx_dd1.create_preference(‘My_CHN_Lexer,‘CHINESE_VGRAM_LEXER);

        ctx_dd1.create_preference(‘My_Multi_Lexer,‘MULTI_LEXER);

        ctx_dd1.a(chǎn)dd_sub_lexer(‘My_Multi_Lexer,‘ENGLISH,‘My_ENG_Lexer,‘My_Eng);

        ctx_dd1.a(chǎn)dd_sub_lexer(‘My_Multi_Lexer,‘simplified chinese,‘M y_CHN_Lexer,‘M y_Chi);

        end;

        (7)索引類型及創(chuàng)建

        Oracle提供了4種索引類型.CONTEXT索引的功能很強(qiáng)大,也是最常用的類型.創(chuàng)建索引有許多選項(xiàng),但如果只是英文文檔,簡單的使用一個(gè)create語句就可以了,例如:

        create index myindex on articles_formatted(text)indextype is ctxsys.context;

        對于其它語言的文檔,就需要使用其它的選項(xiàng)。舉例說明如下:

        create index index_doc on articles_formatted (text)indextype is ctxsys.context parameters(‘datastore My_File_DATASTORE

        filterctxsys.inso_filter

        charset column charset_col

        format column format_col

        lexerMy_Multi_Lexer

        language column lang);

        當(dāng)加載了新文檔或刪除文檔后,就必須重建索引。有兩種方法可以使索引保持同步。一種是ctxgrv程序,另一種方法是手動(dòng)對索引進(jìn)行更新:

        alter index index—doc rebuild param eters(‘SYNC);

        這種方法對于文檔列更新不很頻繁的情況更為適用。

        3..查詢處理

        索引創(chuàng)建和更新以后,就可以檢索了,例如:

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

        其可以查找到所有包含“oracle”的文檔的title,并由score()函數(shù)得出Oracle Text對于該文章匹配程度的打分。

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

        查找包含“politics”主題的所有文檔顯示其title,并由score()函數(shù)得出Oracle Text對于該文章匹配程度的打分。

        四、小結(jié)

        Oracle Text和PL/SQL為關(guān)系數(shù)據(jù)庫提供了完備的IR解決方案,使用INSO過濾器,Oracle Text支持150種多種不同文檔類型的檢索,還可以提取主題詞或要點(diǎn)可以高亮度顯示關(guān)鍵字和主題詞,支持詞干技術(shù)、模糊查詢和通配符查詢等,非常便于大型信息檢索系統(tǒng)的開發(fā)。

        參考文獻(xiàn):

        [1] Colin McGregor.Oracle8i interMedia Text Reference. http://download.oracle.com/docs/cd/F49540_01/DOC/inter.815/a67843/cdefault.htm.1999,2.

        作者簡介:曾妮麗,女, 1980年5月生,2002年畢業(yè)于南京理工大學(xué),講師)。

        猜你喜歡
        全文檢索
        基于Lucene全文檢索技術(shù)的優(yōu)化探討
        Oracle數(shù)據(jù)庫全文檢索性能研究
        全文檢索引擎技術(shù)在電子病歷中的應(yīng)用
        基于KySou的全文檢索系統(tǒng)的分析與優(yōu)化
        特色數(shù)據(jù)庫全文檢索系統(tǒng)的設(shè)計(jì)
        用JSP調(diào)用Lucene包來實(shí)現(xiàn)全文檢索
        欧美xxxxx高潮喷水麻豆 | 国产精品日日摸夜夜添夜夜添| 久久本道久久综合一人| 免费国产在线精品一区二区三区免| 无码成人一区二区| 84pao强力打造免费视频34| 超碰性爱| 亚洲天堂久久午夜福利| 在线看亚洲十八禁网站| 亚洲国产日韩精品综合| 中文字幕一区二区三区四区| 五月丁香综合激情六月久久| 日韩精品一区二区三区在线观看| 中日无码精品一区二区三区| 久久中文字幕亚洲综合| 99久久精品免费观看国产| 波多野结衣有码| 亚洲一级av大片在线观看| 产美女被爽到高潮免费a| 国产成人涩涩涩视频在线观看| 在线a亚洲视频播放在线观看 | 日本女优爱爱中文字幕| 欧美性白人极品1819hd| 色婷婷综合久久久久中文| 加勒比在线一区二区三区| 麻豆成人久久精品一区| 亚洲av无码乱码在线观看牲色 | 成年女人黄小视频| 亚洲成人福利在线观看| av在线男人的免费天堂| 高黄暴h日本在线观看| 把插八插露脸对白内射| 亚洲AV小说在线观看| 最新国产女主播在线观看| 久久综合给合综合久久| 国产精品丝袜在线不卡| 中文字幕亚洲高清精品一区在线| 久久96国产精品久久久| 亚洲欧美国产日韩天堂在线视| 亚洲成人色黄网站久久| 黑人大群体交免费视频|