專(zhuān)利名稱(chēng)::全文檢索方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及信息檢索技術(shù),尤其涉及一種全文檢索方法及系統(tǒng),
背景技術(shù):
:近年來(lái)隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,網(wǎng)絡(luò)信息急劇膨脹,如何從海量數(shù)據(jù)中找出用戶(hù)需要的信息的這一問(wèn)題對(duì)人們來(lái)說(shuō)是至關(guān)重要的,傳統(tǒng)的人工方式已經(jīng)無(wú)法適用如此龐大的數(shù)據(jù)容量,因此基于計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的信息搜索技術(shù)成為解決這一問(wèn)題的重要工具。在現(xiàn)在的數(shù)據(jù)庫(kù)技術(shù)中,用于數(shù)據(jù)檢索的數(shù)據(jù)庫(kù)技術(shù)主要為關(guān)系型數(shù)據(jù)庫(kù)。對(duì)于關(guān)系型數(shù)據(jù)庫(kù),數(shù)據(jù)持有者須將已存在的數(shù)據(jù)存入關(guān)系型數(shù)據(jù)庫(kù)中,然后針對(duì)某個(gè)字段編寫(xiě)對(duì)應(yīng)的SQL檢索表達(dá)式,通過(guò)該SQL檢索表達(dá)式來(lái)進(jìn)行數(shù)據(jù)的檢索。在處理對(duì)象數(shù)據(jù)時(shí),關(guān)系型數(shù)據(jù)庫(kù)需要將相關(guān)的數(shù)據(jù)均組織在一張張大小固定的表格中,在檢索信息時(shí)必須通過(guò)SQL檢索表達(dá)式將信息所涉及的各個(gè)表格的關(guān)聯(lián)來(lái)達(dá)到檢索目的。關(guān)系型數(shù)據(jù)庫(kù)檢索的速度較慢,其查詢(xún)信息的準(zhǔn)確率也相對(duì)較差,尤其是在百萬(wàn)級(jí)別以上數(shù)據(jù)量的情況下,其檢索的響應(yīng)速度難以令人滿(mǎn)意。在多字段檢索上,無(wú)論是速度還是查準(zhǔn)率上都難以滿(mǎn)足人們的需要。另外,對(duì)于非格式化數(shù)據(jù)的檢索,關(guān)系型數(shù)據(jù)庫(kù)不擅長(zhǎng)處理。
發(fā)明內(nèi)容本發(fā)明的目的是提出一種全文檢索方法及系統(tǒng),能夠在海量數(shù)據(jù)中為用戶(hù)快速準(zhǔn)確地查找到所需的信息。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種全文檢索方法,包括以下步驟接收包括檢索詞的檢索表達(dá)式,并對(duì)所述檢索詞進(jìn)行分詞處理;根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的虛擬信息文件(VirtualInformationFile,簡(jiǎn)稱(chēng)VIF)中查找所述詞條在全文數(shù)據(jù)庫(kù)中的字節(jié)索引文件(ByteIndexFile,簡(jiǎn)稱(chēng)BIF)中的位置信息;根據(jù)所述位置信息在所述BIF文件中查找與所述詞條對(duì)應(yīng)的記錄信息;根據(jù)所述記錄信息在全文數(shù)據(jù)庫(kù)中的字節(jié)加速文件(ByteAcceleratedFile,簡(jiǎn)稱(chēng)BAF)中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。進(jìn)一步的,在檢索操作之前,還包括所述全文數(shù)據(jù)庫(kù)的建立流程,該流程具體包括以下步驟根據(jù)確定的所述全文數(shù)據(jù)庫(kù)中涉及的各種檢索字段、檢索字段的類(lèi)型以及檢索字段的快速查找屬性來(lái)建立數(shù)據(jù)庫(kù)腳本;根據(jù)所述數(shù)據(jù)庫(kù)腳本生成BAF文件,并在該BAF文件中的數(shù)據(jù)塊中存儲(chǔ)輸入的記錄的整體或部分,然后在記錄號(hào)索引中保存所述記錄的整體或部分對(duì)應(yīng)的數(shù)據(jù)塊的指針;根據(jù)所述BAF文件生成BIF文件,并對(duì)所述BAF文件中具有快速查找屬性的檢索字段中詞條進(jìn)行散列函數(shù)運(yùn)算,生成與所述詞條唯一對(duì)應(yīng)的散列碼,然后在所述BIF文件中保存所述散列碼、與該散列碼對(duì)應(yīng)的入口地址以及所述詞條的位置信息;根據(jù)所述BIF文件生成VIF文件,將所述詞條分解成多個(gè)連符,然后在VIF文件中保存所述詞條的散列碼、所述詞條在所述BIF文件中的位置信息以及各個(gè)連符的首字符在所述詞條中的偏位值。進(jìn)一步的,在所述BAF文件中保存記錄時(shí),還包括在所述BAF文件的控制塊中保存最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后被修改和新增紀(jì)錄的記錄號(hào)中至少一種。進(jìn)一步的,在所述BAF文件中保存記錄時(shí),還包括在所述BAF文件的空位表中記錄未使用的數(shù)據(jù)空間。進(jìn)一步的,在所述BIF文件中保存所述詞條的位置信息的操作具體為6對(duì)于字段類(lèi)型為詞組字段、整數(shù)、數(shù)值、日期或時(shí)間的詞條,保存該詞條的字段和子字段;對(duì)于字段類(lèi)型為正文字段的詞條,保存該詞條的字段、段落、句子以及詞條在句子中的位置。為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種全文檢索系統(tǒng),包括BAF文件存儲(chǔ)模塊,用于存儲(chǔ)全文數(shù)據(jù)庫(kù)中的各個(gè)記錄;BIF文件存儲(chǔ)模塊,用于存儲(chǔ)所述BAF文件中設(shè)置了快速查找屬性的檢索字段中的詞條的位置信息;VIF文件存儲(chǔ)模塊,用于存儲(chǔ)所述BIF文件中詞條的位置信息以及由所述詞條分解出的連符相對(duì)于所述詞條的偏位值;分詞模塊,用于接收包括檢索詞的檢索表達(dá)式,并對(duì)所述檢索詞進(jìn)4亍分詞處理;檢索模塊,用于根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的VIF文件中查找所述詞條在全文數(shù)據(jù)庫(kù)中的BIF文件中的位置信息,然后根據(jù)所述位置信息在所述BIF文件中查找與所述詞條對(duì)應(yīng)的記錄信息,最后根據(jù)所述記錄信息在全文數(shù)據(jù)庫(kù)中的BAF文件中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。進(jìn)一步的,所述BAF文件存儲(chǔ)模塊具體包括用于存儲(chǔ)記錄的整體或部分的數(shù)據(jù)塊和用于存儲(chǔ)所述記錄的整體或部分對(duì)應(yīng)的數(shù)據(jù)塊的指針的記錄號(hào)索引;BIF文件存儲(chǔ)模塊具體包括與所述BAF文件中具有快速查找屬性的檢索字段中詞條唯一對(duì)應(yīng)的散列碼、與該散列碼對(duì)應(yīng)的入口地址以及所述詞條的位置信息;VIF文件存儲(chǔ)模塊具體包括所述詞條的散列碼、所述詞條在所述BIF文件中的位置信息以及各個(gè)連符的首字符在所述詞條中的偏位值。進(jìn)一步的,所述BAF文件存儲(chǔ)模塊中還包括控制塊,用于保存最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后被修改和新增紀(jì)錄的記錄號(hào)中至少一種;空位表,用于在記錄未使用的數(shù)據(jù)空間。進(jìn)一步的,還包括散列碼生成器,用于對(duì)所述BAF文件存儲(chǔ)模塊中具有快速查找屬性的檢索字段中詞條進(jìn)行散列函數(shù)運(yùn)算,生成與所述詞條唯一對(duì)應(yīng)的散列碼?;谏鲜黾夹g(shù)方案,本發(fā)明檢索的對(duì)象數(shù)據(jù)庫(kù)采用了包括BAF文件、BIF文件和VIF文件的全文數(shù)據(jù)庫(kù),并且BIF文件中采用了倒排文件索引技術(shù),由于散列碼的唯一性檢索時(shí)可以迅速的找到被檢索信息。通過(guò)對(duì)BIF文件進(jìn)行連符的索引,保證了檢索時(shí)可以達(dá)到高度的查全率和查準(zhǔn)率。此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖1為本發(fā)明全文檢索方法的一實(shí)施例的流程示意圖。圖2為本發(fā)明全文檢索方法的另一實(shí)施例的全文數(shù)據(jù)庫(kù)建立過(guò)程的流程示意圖。圖3為本發(fā)明中BAF文件的結(jié)構(gòu)示意圖。圖4為本發(fā)明中BIF文件的詞條散列化的過(guò)程示意圖。圖5為本發(fā)明全文檢索系統(tǒng)的一實(shí)施例的結(jié)構(gòu)示意圖。圖6為本發(fā)明全文檢索系統(tǒng)的另一實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施例方式下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。本發(fā)明的全文數(shù)據(jù)庫(kù)的組織結(jié)構(gòu)與現(xiàn)有的關(guān)系型數(shù)據(jù)庫(kù)不同,該數(shù)據(jù)庫(kù)通常只包括三個(gè)獨(dú)立的文件,其后綴分別是.BAF,.BIF和.VIF,也就是BAF文件、BIF文件和VIF文件。其中BAF文件為基本文件,存放著數(shù)據(jù)庫(kù)記錄的原始信息。BIF文件又被稱(chēng)為倒排文件(invertedfile),存放著能對(duì)原始信息快速查找的詞條,VIF文件是BIF文件所存詞條的倒排信息,主要用于模糊查找,以確保查全率和查準(zhǔn)率。這種三文件的結(jié)構(gòu)主要取決于信息內(nèi)容,而和系統(tǒng)運(yùn)行所在環(huán)境的存儲(chǔ)介質(zhì)無(wú)關(guān),也就是說(shuō),數(shù)據(jù)庫(kù)的這三個(gè)文件是獨(dú)立于操作系統(tǒng)平臺(tái)的。例如,在SUNSolaris平臺(tái)上建立的這三個(gè)文件可以直接移到OSF1True-64的系統(tǒng)下運(yùn)行,無(wú)需進(jìn)4亍數(shù)據(jù)的倒出、倒入之類(lèi)的格式轉(zhuǎn)換。接下來(lái),先分別對(duì)這三種文件進(jìn)行更詳細(xì)的描述。如圖3所示,為本發(fā)明中BAF文件的結(jié)構(gòu)示意圖。BAF文件由控制塊(controlblock)、記錄號(hào)索引(directorytrack)、空位表(freelist)、數(shù)據(jù)塊(datablock)組成,其中數(shù)據(jù)塊和記錄號(hào)索引是BAF文件的基本組成部分。控制塊中存放著最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后至今做過(guò)修改和新增記錄的記錄號(hào)至少一種。記錄號(hào)索引由許多塊組成,每塊包含著指針,指向每個(gè)記錄的最新版和該版生成/修改的日期及時(shí)間。每塊可保存有多個(gè)記錄。記錄號(hào)索引中一般可以保存最新版本的記錄,不過(guò)在形成記錄號(hào)索引時(shí)會(huì)產(chǎn)生一個(gè)指向前一版本的指針,而前一版本也有一個(gè)指向更前版本的指針,如此類(lèi)推。也就是說(shuō),每個(gè)記錄在其生成以及修改的各個(gè)版本都會(huì)被保留著,直到對(duì)數(shù)據(jù)庫(kù)進(jìn)行索引時(shí),每個(gè)記錄除保留一個(gè)最新版外,其余版本全部將被刪除??瘴槐肀4娴氖荁AF文件中每個(gè)數(shù)據(jù)塊中還有多少未使用的數(shù)據(jù)空間。數(shù)據(jù)塊是存放記錄數(shù)據(jù)本身的地方,每塊連續(xù)地存著記錄的整體或記錄的一部分,還可以保存閑置的空間。BIF文件又被稱(chēng)為倒排文件,存儲(chǔ)的是BAF文件中要快速查找字段中的詞條(term)的位置信息。當(dāng)系統(tǒng)在做倒排索引處理時(shí),將對(duì)BAF文件的記錄逐一掃描,把還沒(méi)有做過(guò)倒排的記錄中需要快速查找字段的詞條,或把上一次倒排后做過(guò)修改的記錄中的相關(guān)字段的詞條9都一個(gè)個(gè)摘取出來(lái),進(jìn)行散列函數(shù)(hash)運(yùn)算,生成一個(gè)唯一的、32bit值的散列碼(hashcode),和一個(gè)nbit的入口塊號(hào)(entryblocknumber)。入口塊號(hào)表示該詞條在文件中的起始位置,即入口地址,實(shí)際就是一個(gè)指向該入口塊(entryblock)的指針。入口塊中所存儲(chǔ)的就是詞條的散列碼。參見(jiàn)圖4。詞條(term)的位置信息的內(nèi)容跟詞條所在字段的數(shù)據(jù)類(lèi)型有密切關(guān)系。對(duì)于正文TEXT字段,詞條的位置信息將包含記錄,字段,段落,句以及詞在句中的位置。至于詞組(phrase)字段以及其他非正文和字符串(String)類(lèi)型的字段(例如整數(shù)、數(shù)值、日期或時(shí)間等),因其中沒(méi)有句、段落的結(jié)構(gòu),詞條的位置信息僅包含字段、子字段。詞組字段除了對(duì)一個(gè)個(gè)詞條算出32bit值的散列碼外,還可以對(duì)整個(gè)子字段(最多256字符長(zhǎng))作為一個(gè)詞條來(lái)進(jìn)行hash運(yùn)算,取得32bit值的散列碼,因此,在對(duì)整個(gè)子字段查找時(shí),其查找速度和檢索一個(gè)詞一樣快。下面是正文或詞組字段的BIF文件結(jié)構(gòu)表。<table>tableseeoriginaldocumentpage10</column></row><table>詞條各次出現(xiàn)的位置信息的內(nèi)容用"--"表示,它包括記錄號(hào)、字段號(hào)、子字段或段落號(hào)、句號(hào)以及詞的位置等。VIF文件是BIF文件中出現(xiàn)的字段(例如正文字段和詞組字段等)的索引文件。系統(tǒng)在建立VIF文件時(shí),要對(duì)每個(gè)詞條分解成一個(gè)或多個(gè)個(gè)字符組成的連符,然后將這些連符當(dāng)作詞條處理,建成VIF文件。如果沒(méi)有VIF文件,那么檢索信息將存在查準(zhǔn)率不高等問(wèn)題,嚴(yán)重影響檢索的信息質(zhì)量,尤其是對(duì)于模糊檢索這樣的功能。舉例來(lái)說(shuō),BAF文件的記錄中出現(xiàn)有"apple",那么apple將作為一個(gè)詞條被保存在BIF文件。對(duì)它進(jìn)行分解,可以得出如下12種3、2、l字符的組合表<table>tableseeoriginaldocumentpage11</column></row><table>掃描BIF文件所得有關(guān)"apple"的定位信息包括整個(gè)詞條在BIF文件中的位置,以及VIF中各連符首字符的偏位值,即連符首字符至詞條本身首字符的距離。以上表為例,三連符PPL的偏位是2,因?yàn)樗加谠~條apple的第二個(gè)字符。VIF文件結(jié)構(gòu)如下表所示。<table>tableseeoriginaldocumentpage11</column></row><table>每個(gè)位置信息塊包含一個(gè)源詞條的散列碼和連符在源詞條中的偏位值(信息塊的內(nèi)容用"--"表示)。VIF文件用于數(shù)據(jù)庫(kù)查找時(shí)的截?cái)嗥ヅ浠蚰J狡ヅ?,以及模糊查找。VIF文件中一般不包括數(shù)值類(lèi)型、日期類(lèi)型和時(shí)間類(lèi)型字段的數(shù)據(jù)。對(duì)于中文詞來(lái)說(shuō),在VIF文件中可以釆用詞表的方式,以完成給定詞之外信息的間接檢索,舉例來(lái)說(shuō),詞表可以設(shè)置五種不同概念的詞(控制詞、同義詞、廣義詞、狹義詞和相關(guān)詞),分別扮演不同的角色。其中控制詞是檢索時(shí)由檢索式中得到的檢索詞,同義詞是與控制詞意義上完全相同的詞,廣義詞是控制詞的上位概念詞,狹義詞是比控制詞意義更下位一級(jí)概念的詞,相關(guān)詞是與控制詞同一級(jí)概念的且與控制詞有關(guān)聯(lián)的詞。這些詞表都可以被存在VIF文件中,如果用戶(hù)需要查找某個(gè)詞的同義詞/廣義詞/狹義詞/相關(guān)詞所涉及的相關(guān)內(nèi)容,便可以通過(guò)檢索系統(tǒng)實(shí)現(xiàn)這些間接信息的查詢(xún)。接下來(lái),再對(duì)本發(fā)明所舉例的幾種數(shù)據(jù)類(lèi)型進(jìn)行簡(jiǎn)單說(shuō)明。本發(fā)明的全文數(shù)據(jù)庫(kù)的數(shù)據(jù)由記錄組成,記錄又由字段組成。記錄中的字段可容納幾種不同類(lèi)型的信息,例如詞組Phrase(如名稱(chēng)、標(biāo)題、地址、關(guān)鍵詞、電話(huà),長(zhǎng)度小于、等于255字符);整數(shù)Integer(-2,147,483,647至+2,147,483,647);數(shù)值Number(整數(shù)、實(shí)數(shù)-1.7E+37至1.7E+37);正文Text(按段落、句子、詞格式編寫(xiě)的自由文體);日期Date(按YYYY陽(yáng)MM畫(huà)DD,YY.MM.DD或YY-MM);時(shí)間Time(按HH:MM:SS,HH-MM-SS或HH:MM,HH-MM);字串String(存放二進(jìn)制信息)。記錄中字段的個(gè)數(shù)不限。除正文、字串?dāng)?shù)據(jù)類(lèi)型外,其他類(lèi)型字段下可以分子字段(subfield)。對(duì)于正文類(lèi)型字段來(lái)說(shuō),可以分成段落(paragraph),段落之中再分成句子(sentence),句子之中再分成詞(word)。字段中子字段的數(shù)量可以不進(jìn)行限制,如一個(gè)記錄中的一人名字段,可以容納成百上千個(gè)(無(wú)上限)人名,每個(gè)名字單獨(dú)占一個(gè)子字段。字段中的段落數(shù),段落中的句子數(shù),句中之詞的個(gè)數(shù)也是沒(méi)有限的,這便利于存放一篇篇的公文、法律文件。所有這些子字段、段落、句子、詞在數(shù)據(jù)庫(kù)中都會(huì)自動(dòng)賦以編號(hào),以便需要時(shí)能按位置進(jìn)行準(zhǔn)確查找。所以一個(gè)數(shù)據(jù)庫(kù)看起來(lái)就像一個(gè)具有無(wú)限個(gè)抽屜的文件根,每個(gè)抽屜代表一個(gè)記錄,但這個(gè)抽屜好似是無(wú)底的,因?yàn)樗纱娣诺膬?nèi)容(字段、子字段、段落、句子、詞)沒(méi)有數(shù)量上的限制。上述類(lèi)型的字段信息(例如詞組、整數(shù)、數(shù)值、正文、日期及時(shí)12間等)均可以進(jìn)行倒排,以便快速查找。如圖1所示,為本發(fā)明全文檢索方法的一實(shí)施例的流程示意圖。該流程包括以下步驟步驟IOI、接收包括檢索詞的檢索表達(dá)式,并對(duì)該檢索詞進(jìn)行分詞處理,對(duì)于中文和英文的檢索詞,可以采用不同的方式進(jìn)行分詞,例如對(duì)于英文可以以空格為分詞標(biāo)記將每個(gè)英文詞提取出來(lái),對(duì)于中文可以將檢索詞按照VIF中詞表的內(nèi)容分成多個(gè)有意義的詞條;步驟102、根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的VIF文件中查找該詞條在全文數(shù)據(jù)庫(kù)中的BIF文件中的位置信息;步驟103、根據(jù)該位置信息在該BIF文件中查找與該詞條對(duì)應(yīng)的記錄信息;步驟104、根據(jù)該記錄信息在全文數(shù)據(jù)庫(kù)中的BAF文件中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。由于在BIF文件中采用了散列函數(shù)生成每個(gè)詞條的唯一散列碼,因此在檢索時(shí)可以輕易定位被檢索的信息,即使在百萬(wàn)級(jí)以上的數(shù)據(jù)庫(kù)中,也可以快速的定位被檢索的信息。試驗(yàn)表明,在同一機(jī)器上處理同樣的數(shù)據(jù)對(duì)象,檢索反應(yīng)速度要比一般關(guān)系型數(shù)據(jù)庫(kù)快一個(gè)數(shù)量級(jí)(10倍)以上。百萬(wàn)記錄數(shù)量級(jí)情況下,按當(dāng)今計(jì)算機(jī)運(yùn)作的速度只需幾分之一秒時(shí)間。另外,通過(guò)對(duì)BIF文件進(jìn)行連符的索引,保證了檢索時(shí)可以達(dá)到高度的查全率和查準(zhǔn)率。如圖2所示,為本發(fā)明全文檢索方法的另一實(shí)施例的全文數(shù)據(jù)庫(kù)建立過(guò)程的流程示意圖。該流程包括以下步驟步驟201、根據(jù)確定的該全文數(shù)據(jù)庫(kù)中涉及的各種檢索字段、檢索字段的類(lèi)型以及檢索字段的快速查找屬性來(lái)建立數(shù)據(jù)庫(kù)腳本;步驟202、根據(jù)該數(shù)據(jù)庫(kù)腳本生成BAF文件,并在該BAF文件中的數(shù)據(jù)塊中存儲(chǔ)輸入的記錄的整體或部分;步驟203、在BAF文件中的記錄號(hào)索引保存該記錄的整體或部分對(duì)應(yīng)的數(shù)據(jù)塊的指針;步驟204、根據(jù)該BAF文件生成BIF文件,并對(duì)該BAF文件中具有快速查找屬性的檢索字段中詞條進(jìn)行散列函數(shù)運(yùn)算,生成與該詞條唯一對(duì)應(yīng)的散列碼;步驟205、在該BIF文件中保存該散列碼、與該散列碼對(duì)應(yīng)的入口地址以及該詞條的位置信息;步驟206、才艮據(jù)該BIF文件生成VIF文件,將該詞條分解成多個(gè)連符;步驟207、在VIF文件中保存該詞條的散列碼、該詞條在該BIF文件中的位置信息以及各個(gè)連符的首字符在該詞條中的偏位值。在上述技術(shù)方案的步驟203中,還可以在BAF文件的控制塊中保存最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后被修改和新增紀(jì)錄的記錄號(hào)中至少一種。另外,也可以在BAF文件的空位表中記錄未使用的數(shù)據(jù)空間。在步驟205中,對(duì)于字段類(lèi)型為詞組、整數(shù)、數(shù)值、日期或時(shí)間的詞條字段,通常只保存該詞條的字段和子字段。而對(duì)于字段類(lèi)型為正文字段的詞條,要保存該詞條的字段、段落、句子以及詞條在句子中的位置。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。如圖5所示,為本發(fā)明全文檢索系統(tǒng)的一實(shí)施例的結(jié)構(gòu)示意圖。本系統(tǒng)實(shí)施例包括BAF文件存儲(chǔ)模塊1、BIF文件存儲(chǔ)模塊2、VIF文件存儲(chǔ)模塊3、分詞模塊4和檢索模塊5。其中,BAF文件存儲(chǔ)模塊1用于存儲(chǔ)全文數(shù)據(jù)庫(kù)中的各個(gè)記錄。該BAF文件存儲(chǔ)模塊1可以具體包括用于存儲(chǔ)記錄的整體或部分的數(shù)據(jù)塊和用于存儲(chǔ)所述記錄的整體或部分對(duì)應(yīng)的數(shù)據(jù)塊的指針的記錄號(hào)索引??蛇x的,該BAF文件存儲(chǔ)模塊1還可以包括控制塊,用于保存最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后被修改和新增紀(jì)錄的記錄號(hào)中至少一種;空位表,用于在記錄未使用的數(shù)據(jù)空間。BIF文件存儲(chǔ)模塊2用于存儲(chǔ)BAF文件中設(shè)置了快速查找屬性的檢索字段中的詞條的位置信息。該BIF文件存儲(chǔ)模塊2可以具體包括與所述BAF文件中具有快速查找屬性的檢索字段中詞條唯一對(duì)應(yīng)的散列碼、與該散列碼對(duì)應(yīng)的入口地址以及所述詞條的位置信息。VIF文件存儲(chǔ)模塊3用于存儲(chǔ)BIF文件中詞條的位置信息以及由詞條分解出的連符相對(duì)于所述詞條的偏位值。該VIF文件存儲(chǔ)模塊3可以具體包括所述詞條的散列碼、所述詞條在所述BIF文件中的位置信息以及各個(gè)連符的首字符在所述詞條中的偏位值。BAF文件存儲(chǔ)模塊1、BIF文件存儲(chǔ)模塊2和VIF文件存儲(chǔ)模塊3構(gòu)成了全文數(shù)據(jù)庫(kù)的數(shù)據(jù)部分。分詞模塊4用于接收包括檢索詞的檢索表達(dá)式,并對(duì)所述檢索詞進(jìn)行分詞處理。檢索模塊5用于根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的VIF文件中查找該詞條在全文數(shù)據(jù)庫(kù)中的BIF文件中的位置信息,然后根據(jù)該位置信息在該BIF文件中查找與該詞條對(duì)應(yīng)的記錄信息,最后根據(jù)該記錄信息在全文數(shù)據(jù)庫(kù)中的BAF文件中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。如圖6所示,為本發(fā)明全文檢索系統(tǒng)的另一實(shí)施例的結(jié)構(gòu)示意圖。與上一實(shí)施例相比,本系統(tǒng)實(shí)施例還可以包括散列碼生成器6,用于對(duì)BAF文件存儲(chǔ)模塊2中具有快速查找屬性的檢索字段中詞條進(jìn)行散列函數(shù)運(yùn)算,生成與所述詞條唯一對(duì)應(yīng)的散列碼。本發(fā)明的系統(tǒng)實(shí)施例在BIF文件中釆用了散列函數(shù)生成每個(gè)詞條的唯一散列碼,因此可以在海量檢索時(shí)輕易定位被檢索的信息,并通過(guò)對(duì)BIF文件進(jìn)行連符的索引,保證了檢索時(shí)可以達(dá)到高度的查全率和查準(zhǔn)率。最后應(yīng)當(dāng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其限制;盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行修改或者對(duì)部分技術(shù)特征進(jìn)行等同替換;而不脫離本發(fā)明技術(shù)方案的精神,其均應(yīng)涵蓋在本發(fā)明請(qǐng)求保護(hù)的技術(shù)方案范圍當(dāng)中。1權(quán)利要求1、一種全文檢索方法,包括以下步驟接收包括檢索詞的檢索表達(dá)式,并對(duì)所述檢索詞進(jìn)行分詞處理;根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的虛擬信息文件文件中查找所述詞條在全文數(shù)據(jù)庫(kù)中的字節(jié)索引文件中的位置信息;根據(jù)所述位置信息在所述字節(jié)索引文件中查找與所述詞條對(duì)應(yīng)的記錄信息;根據(jù)所述記錄信息在全文數(shù)據(jù)庫(kù)中的字節(jié)加速文件中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。2、根據(jù)權(quán)利要求l所述的全文檢索方法,其中在檢索操作之前,還包括所迷全文數(shù)據(jù)庫(kù)的建立流程,該流程具體包括以下步驟根據(jù)確定的所迷全文數(shù)據(jù)庫(kù)中涉及的各種檢索字段、檢索字段的類(lèi)型以及檢索字段的快速查找屬性來(lái)建立數(shù)據(jù)庫(kù)腳本;根據(jù)所述數(shù)據(jù)庫(kù)腳本生成字節(jié)加速文件,并在該字節(jié)加速文件中的數(shù)據(jù)塊中存儲(chǔ)輸入的記錄的整體或部分,然后在記錄號(hào)索引中保存所述記錄的整體或部分對(duì)應(yīng)的數(shù)據(jù)塊的指針;根據(jù)所迷字節(jié)加速文件生成字節(jié)索引文件,并對(duì)所述字節(jié)加速文件中具有快速查找屬性的檢索字段中詞條進(jìn)行散列函數(shù)運(yùn)算,生成與所述詞條唯一對(duì)應(yīng)的散列碼,然后在所迷字節(jié)索引文件中保存所述散列碼、與該散列碼對(duì)應(yīng)的入口地址以及所述詞條的位置信息;根據(jù)所述字節(jié)索引文件生成虛擬信息文件,將所述詞條分解成多個(gè)連符,然后在虛擬信息文件中保存所述詞條的散列碼、所述詞條在所述字節(jié)索引文件中的位置信息以及各個(gè)連符的首字符在所述詞條中的偏位值。3、根據(jù)權(quán)利要求2所述的全文檢索方法,其中在所述字節(jié)加速文件中保存記錄時(shí),還包括在所述字節(jié)加速文件的控制塊中保存最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后被修改和新增紀(jì)錄的記錄號(hào)中至少一種。4、根據(jù)權(quán)利要求2所述的全文檢索方法,其中在所述字節(jié)加速文件中保存記錄時(shí),還包括在所述字節(jié)加速文件的空位表中記錄未使用的數(shù)據(jù)空間。5、根據(jù)權(quán)利要求2所述的全文檢索方法,其中在所述字節(jié)索引文件中保存所述詞條的位置信息的操作具體為對(duì)于字段類(lèi)型為詞組、整數(shù)、數(shù)值、日期或時(shí)間的詞條字段,保存該詞條的字段和子字段;對(duì)于字段類(lèi)型為正文字段的詞條,保存該詞條的字段、段落、句子以及詞條在句子中的位置。6、一種全文檢索系統(tǒng),包括字節(jié)加速文件存儲(chǔ)模塊,用于存儲(chǔ)全文數(shù)據(jù)庫(kù)中的各個(gè)記錄;字節(jié)索引文件存儲(chǔ)模塊,用于存儲(chǔ)所述字節(jié)加速文件中設(shè)置了快速查找屬性的檢索字段中的詞條的位置信息;虛擬信息文件存儲(chǔ)模塊,用于存儲(chǔ)所述字節(jié)索引文件中詞條的位置信息以及由所述詞條分解出的連符相對(duì)于所述詞條的偏位值;分詞模塊,用于接收包括檢索詞的檢索表達(dá)式,并對(duì)所述檢索詞進(jìn)行分詞處理;檢索模塊,用于根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的虛擬信息文件中查找所述詞條在全文數(shù)據(jù)庫(kù)中的字節(jié)索引文件中的位置信息,然后根據(jù)所述位置信息在所述字節(jié)索引文件中查找與所述詞條對(duì)應(yīng)的記錄信息,最后根據(jù)所述記錄信息在全文數(shù)據(jù)庫(kù)中的字節(jié)加速文件中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。7、根據(jù)權(quán)利要求6所述的全文檢索系統(tǒng),其中所述字節(jié)加速文件存儲(chǔ)模塊具體包括用于存儲(chǔ)記錄的整體或部分的數(shù)據(jù)塊和用于存儲(chǔ)所述記錄的整體或部分對(duì)應(yīng)的數(shù)據(jù)塊的指針的記錄號(hào)索引;字節(jié)索引文件存儲(chǔ)模塊具體包括與所述字節(jié)加速文件中具有快速查找屬性的檢索字段中詞條唯一對(duì)應(yīng)的散列碼、與該散列碼對(duì)應(yīng)的入口地址以及所述詞條的位置信息;虛擬信息文件存儲(chǔ)模塊具體包括所述詞條的散列碼、所述詞條在所述字節(jié)索引文件中的位置信息以及各個(gè)連符的首字符在所述詞條中的偏位值。8、根據(jù)權(quán)利要求7所述的全文檢索系統(tǒng),其中所述字節(jié)加速文件存儲(chǔ)模塊中還包括控制塊,用于保存最高記錄號(hào)、經(jīng)過(guò)索引的最高記錄號(hào)以及上次索引后被修改和新增紀(jì)錄的記錄號(hào)中至少一種;空位表,用于在記錄未使用的數(shù)據(jù)空間。9、根據(jù)權(quán)利要求6所述的全文檢索系統(tǒng),其中還包括散列碼生成器,用于對(duì)所述字節(jié)加速文件存儲(chǔ)模塊中具有快速查找屬性的檢索字段中詞條進(jìn)行散列函數(shù)運(yùn)算,生成與所述詞條唯一對(duì)應(yīng)的散列碼。全文摘要本發(fā)明涉及一種全文檢索方法,包括以下步驟接收包括檢索詞的檢索表達(dá)式,并對(duì)檢索詞進(jìn)行分詞處理;根據(jù)分詞處理后得到的詞條在全文數(shù)據(jù)庫(kù)中的VIF文件中查找詞條在全文數(shù)據(jù)庫(kù)中的BIF文件中的位置信息;根據(jù)位置信息在BIF文件中查找與詞條對(duì)應(yīng)的記錄信息;根據(jù)記錄信息在全文數(shù)據(jù)庫(kù)中的BAF文件中提取對(duì)應(yīng)的數(shù)據(jù)信息作為檢索結(jié)果。本發(fā)明還涉及一種全文檢索系統(tǒng),包括BAF文件存儲(chǔ)模塊、BIF文件存儲(chǔ)模塊、VIF文件存儲(chǔ)模塊、分詞模塊和檢索模塊。本發(fā)明在BIF文件中采用了倒排文件索引技術(shù),由于散列碼的唯一性檢索時(shí)可以迅速的找到被檢索信息,并通過(guò)對(duì)BIF文件進(jìn)行連符的索引,保證了檢索時(shí)達(dá)到高度的查全率和查準(zhǔn)率。文檔編號(hào)G06F17/30GK101620607SQ20081012602公開(kāi)日2010年1月6日申請(qǐng)日期2008年7月1日優(yōu)先權(quán)日2008年7月1日發(fā)明者斯周,張紅彬申請(qǐng)人:全國(guó)組織機(jī)構(gòu)代碼管理中心