專利名稱:一種用于數(shù)據(jù)檢索的搜索系統(tǒng)和方法及其在搜索引擎中的應(yīng)用的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于信息(特別是以正文T的形式存儲(chǔ)的信息)檢索的搜索系統(tǒng),其中,信息檢索以查詢Q與被檢索信息R之間的給定或不同程度的匹配而發(fā)生,其中搜索系統(tǒng)包含一個(gè)用于存儲(chǔ)正文(T)的數(shù)據(jù)結(jié)構(gòu),一個(gè)測量查詢Q與被檢索信息R之間匹配程度的尺度M和一個(gè)用于執(zhí)行搜索-特別是根據(jù)關(guān)鍵字的全文搜索的搜索算法;本發(fā)明還涉及該信息(特別是以正文T的形式存儲(chǔ)的信息)檢索的搜索系統(tǒng)中的一種方法,其中將正文T劃分成單詞和單詞序列,單詞是符號(hào)的序列,其中每個(gè)單詞被構(gòu)造為一個(gè)或多個(gè)后綴,后綴是構(gòu)成序列的單詞中的符號(hào)的子集;本發(fā)明還涉及該搜索系統(tǒng)的使用。
人類知識(shí)的各個(gè)領(lǐng)域中的巨量信息被收集和存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)系統(tǒng)中。隨著計(jì)算機(jī)存儲(chǔ)系統(tǒng)越來越多地連接到公共的數(shù)據(jù)通信網(wǎng)絡(luò),人們越來越努力地開發(fā)搜索和檢索信息的系統(tǒng)和方法供公眾或個(gè)人使用。然而,目前的數(shù)據(jù)搜索方法還有局限,這些局限嚴(yán)重降低了有效檢索和使用以這種方式存儲(chǔ)的信息的可能性。
信息能以不同數(shù)據(jù)類型的形式存儲(chǔ),在信息搜索和檢索的意義上,區(qū)別動(dòng)態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)是有用的。動(dòng)態(tài)數(shù)據(jù)是經(jīng)常不斷改變的數(shù)據(jù),因此有效數(shù)據(jù)的集合總是在變化;而靜態(tài)數(shù)據(jù)則不大改變,或者根本不變。例如,諸如股票值的經(jīng)濟(jì)數(shù)據(jù)或氣象數(shù)據(jù)的變化很快,所以是動(dòng)態(tài)的。另一方面,檔案式存儲(chǔ)的書籍和文獻(xiàn)一般是永久性的,所以是靜態(tài)的。數(shù)據(jù)易失性的概念涉及信息在多長時(shí)間里有效。數(shù)據(jù)易失性對應(yīng)當(dāng)如何搜索和檢索信息有一定影響。大量的數(shù)據(jù)要求有便于搜索的某種結(jié)構(gòu),但是建立這種結(jié)構(gòu)的時(shí)間成本決不能高于數(shù)據(jù)有效的時(shí)間。建立一個(gè)結(jié)構(gòu)的成本取決于數(shù)據(jù)量,因此為檢索信息而建立數(shù)據(jù)結(jié)構(gòu)時(shí)應(yīng)當(dāng)考慮數(shù)據(jù)量和易失性兩個(gè)方面。所收集的信息被存儲(chǔ)在數(shù)據(jù)庫中,這些數(shù)據(jù)庫可能是結(jié)構(gòu)化的,也可能是非結(jié)構(gòu)化的。此外,數(shù)據(jù)庫可能含有數(shù)種類型的文件,包括含有圖象、影像、聲音和格式化或帶注釋正文的復(fù)合文件。特別結(jié)構(gòu)化的數(shù)據(jù)庫通常具有便于搜索和檢索數(shù)據(jù)的索引。萬維網(wǎng)(WWW)的成長提供了穩(wěn)定增長的復(fù)合文件和超鏈接文件的收集。這些文件許多都沒有收集在結(jié)構(gòu)化數(shù)據(jù)庫中,沒有便于快速搜索的索引。然而,對搜索萬維網(wǎng)中的文件的需求是顯而易見的,由于已經(jīng)開發(fā)了許多所謂的搜索引擎,至少能搜索萬維網(wǎng)中信息的一部分。
搜索引擎一般被理解為用于搜索和檢索信息的一個(gè)或多個(gè)工具。除了適當(dāng)?shù)乃阉飨到y(tǒng),搜索引擎也含有一個(gè)例如包含來自大量統(tǒng)一資源定位器(URL)的正文的索引。這種搜索引擎的例子是Alta Vista、Inktomy技術(shù)公司的Hotbot、Infoseek、Excite和Yahoo。所有這些搜索引擎都提供在萬維網(wǎng)中進(jìn)行信息的搜索和檢索的便利條件。然而,它們的速度和效率確實(shí)與萬維網(wǎng)上提供的海量信息不般配,所以這些搜索引擎的搜索和檢索效率有很大的改進(jìn)空間。
搜索大量的正文文件一般能用幾個(gè)查詢類型(query type)完成。最普通的查詢類型是對比(matching)和對比的變異(variants)。搜索系統(tǒng)通過指定必須在被查詢信息中出現(xiàn)的一個(gè)關(guān)鍵字或關(guān)鍵字集合,檢索滿足這個(gè)要求的所有文件?;舅阉鞣椒ǜ鶕?jù)的是所謂的單關(guān)鍵字對比。檢索關(guān)鍵字p,將含有該字的所有文件檢索出來。也可能搜索關(guān)鍵字前綴p,將文件中任何關(guān)鍵字中出現(xiàn)這個(gè)前綴的所有文件檢索出來。與關(guān)鍵字搜索不同的是,有時(shí)搜索根據(jù)的是所謂的精確短語對比,其中,搜索使用特定順序的幾個(gè)單關(guān)鍵字。正如本領(lǐng)域的熟練人員熟知的那樣,在許多搜索系統(tǒng)中,關(guān)鍵字短語的精確對比可以用布爾運(yùn)算符來執(zhí)行,例如根據(jù)諸如AND、OR、NOT,它們能篩選信息,即,如果使用AND短語,則返回所有含有由AND運(yùn)算符連接的兩個(gè)關(guān)鍵字的所有文件。也用過NEAR運(yùn)算符,以返回只有在文件正文中有關(guān)鍵字匹配并且位置互相“接近”的文件。在許多結(jié)構(gòu)化數(shù)據(jù)庫中,數(shù)據(jù)庫中含有的文件已被注釋過,即具有解釋文件中某些部分或某些類型的信息的字段。這就允許只在文件的局部搜索匹配,在事先知道所查詢信息的類型時(shí)是有用的。
當(dāng)在正文文件中搜索時(shí),數(shù)據(jù)是結(jié)構(gòu)化的,很可能是以某種自然語言(如英語、挪威語等)的形式出現(xiàn)的。當(dāng)檢索帶有一定上下文的文件時(shí),有可能用近似尺度(proximity metrics)來比較與該查詢近似匹配的關(guān)鍵字或短語。允許關(guān)鍵字和短語中有差錯(cuò)是近似搜索(proximity)的常用方法,使用近義詞是另一種常用方法。近似搜索只要求被檢索信息與查詢之間有部分匹配。國際公開的申請WO96/00945,名稱為“可變長數(shù)據(jù)序列匹配方法和設(shè)備”(Doringer等人),已轉(zhuǎn)讓給IBM公司,該申請披露了一種具有像特里樹的(trie-like)結(jié)構(gòu)的數(shù)據(jù)庫的建立、維護(hù)和使用,該數(shù)據(jù)庫用于存儲(chǔ)表目和從表目中檢索至少部分的匹配,最好是搜索參數(shù)(輸入鍵)的最長或所有部分匹配。
本發(fā)明的主要目的是提供一種搜索系統(tǒng)和方法,用于在大量的數(shù)據(jù)中快速有效地搜索和檢索信息。本發(fā)明的目的特別是為了提供一種適合用搜索引擎搜索帶有分布式大容量數(shù)據(jù)存儲(chǔ)的信息系統(tǒng)(例如因特網(wǎng))的搜索系統(tǒng)。應(yīng)當(dāng)明白,按照本發(fā)明的搜索系統(tǒng)決不限于搜索和檢索以字母數(shù)字符號(hào)的形式存儲(chǔ)的信息,而是能同樣很好地應(yīng)用于搜索和檢索以數(shù)字化的圖形和圖象符號(hào)的形式存儲(chǔ)的信息,因?yàn)檫@里所使用的字正文也可以被解釋為圖象-當(dāng)這些圖象全部或部分地被表示為符號(hào)的集合時(shí)。也應(yīng)當(dāng)明白,按照本發(fā)明的搜索系統(tǒng)能以用商家提供的計(jì)算機(jī)系統(tǒng)上的合適的高級(jí)語言編寫的軟件的形式實(shí)現(xiàn),但是它也能以用于搜索和檢索上述種類的信息的專用處理器設(shè)備的形式實(shí)現(xiàn)。
按照本發(fā)明,上述目的和優(yōu)點(diǎn)是用一種搜索系統(tǒng)實(shí)現(xiàn)的,該搜索系統(tǒng)的特征在于,數(shù)據(jù)結(jié)構(gòu)包含以后綴樹ST(T)為形式的樹結(jié)構(gòu),用于存儲(chǔ)正文T中的字的后綴、字序列和符號(hào)序列;尺度M包含關(guān)于正文T中的字或符號(hào)與查詢Q之間匹配的近似度的編輯距離尺度與關(guān)于正文T中的字或符號(hào)的序列S與查詢序列P之間匹配的近似度的編輯距離尺度的組合,后一個(gè)編輯距離尺度包括關(guān)于將一種字或符號(hào)的序列S轉(zhuǎn)換成另一種字或符號(hào)的序列P的加權(quán)成本函數(shù);搜索算法包含用于確定正文T與查詢Q各自的后綴樹表示中的字之間的匹配程度的第一算法,和/或用于確定正文T與查詢Q各自的后綴樹表示中的字的序列之間的匹配程度的第二算法,所述第一和/或第二算法用以字、字的序列或符號(hào)的序列或者它們的組合為形式的查詢Q搜索數(shù)據(jù)結(jié)構(gòu),使得信息R被根據(jù)查詢Q而檢索出來,前者與后者之間具有規(guī)定的匹配程度。
在按照本發(fā)明的搜索系統(tǒng)的一個(gè)有益的實(shí)施例中,后綴樹ST(T)是一個(gè)只包含正文T中后綴的一個(gè)子集的字間隔稀疏后綴樹SSTWS(T)。
按照本發(fā)明,上述目的和優(yōu)點(diǎn)也是用一種方法實(shí)現(xiàn)的,該方法的特征在于,生成正文T的字間隔稀疏后綴樹SSTWS(T),以代表正文T中所有從一個(gè)字分隔符起始的后綴;在字間隔稀疏后綴樹SSTWS(T)中存儲(chǔ)正文T中的字的序列信息;為字序列S、P生成一個(gè)編輯距離尺度D(S,P),作為將序列S轉(zhuǎn)換成序列P的編輯操作的最小總成本,最小總成本是每個(gè)編輯操作的成本函數(shù)的總和;為字序列S、P生成一個(gè)與字大小有關(guān)的編輯距離尺度DWS(S,P),作為將序列S轉(zhuǎn)換成序列P的最小總成本,該最小總成本是由代表編輯操作中所涉及的字大小的參數(shù)加權(quán)的每個(gè)編輯操作的成本函數(shù)的總和;通過計(jì)算所有匹配的編輯距離D(SR,PQ)而分別地確定所檢索信息R的字序列SR、PQ與查詢Q之間的匹配。
按照本發(fā)明的方法最好還包含對把序列S變?yōu)榱硪粋€(gè)序列P的編輯操作以代表序列S、P的符號(hào)之間的近似性的參數(shù)進(jìn)行加權(quán),由此在確定有關(guān)編輯操作的成本時(shí),將序列S、P之間的相似性考慮在內(nèi)。
在按照本發(fā)明的方法中,最好通過計(jì)算查詢字序列PQ中限定數(shù)量的字的編輯距離D(SR,PQ)來限制匹配的數(shù)目。
上述目的和優(yōu)點(diǎn)也以按照本發(fā)明的搜索系統(tǒng)在近似搜索引擎中的使用而實(shí)現(xiàn)。
以下將參照各附圖更詳細(xì)地討論按照本發(fā)明的搜索系統(tǒng)和方法,附圖中
圖1表示一例后綴樹;圖2是如本發(fā)明所使用的字間隔稀疏后綴樹的例子;圖3是現(xiàn)有技術(shù)中已知的所謂的PATRICIA特里樹的一個(gè)例子;圖4是如本發(fā)明所使用的字間隔稀疏后綴樹的另一個(gè)例子;圖5是如本發(fā)明所使用的顯式(explicitly)存儲(chǔ)的字序列信息的一個(gè)例子;圖6是如本發(fā)明所使用的葉節(jié)點(diǎn)結(jié)構(gòu);圖7是按照本發(fā)明的搜索系統(tǒng)所用的搜索引擎的結(jié)構(gòu)的示意圖。
按照本發(fā)明的搜索系統(tǒng)主要由三個(gè)部分組成,即數(shù)據(jù)結(jié)構(gòu)、近似性匹配的尺度和搜索算法。在目標(biāo)是全文檢索時(shí)-對于按照本發(fā)明的搜索系統(tǒng)來說主要將是這樣,則將是可檢索的整個(gè)數(shù)據(jù)集合將被存儲(chǔ)在支持高查詢效率的數(shù)據(jù)結(jié)構(gòu)中。
首先將對構(gòu)成本發(fā)明基礎(chǔ)的基本概念作較詳細(xì)的討論。以正文T的形式存儲(chǔ)的信息被劃分成字和字序列。字是由字邊界項(xiàng)分隔的整個(gè)正文的子串。把字邊界項(xiàng)的集合記為BTword。字邊界項(xiàng)的一個(gè)常用集合可能是{”,’:’,’\t’,’\n’,’\0’,’.’,’;’,’ ’},其中\(zhòng)t表示制表符,\n表示換行符,\0表示文件結(jié)束標(biāo)記。有些關(guān)于串和序列的定義就本發(fā)明的以下說明來說將是有用的。
定義1串串是從字母表中提取的諸如ASCII字符的符號(hào)的一個(gè)序列。于是串的長度就是組成串的符號(hào)或字符的實(shí)例的數(shù)目,記為|x|。如果x的長度是m,則也可以將串寫成x1x2xi...xm,其中xi代表串中的第i個(gè)符號(hào)。
x的子串是由x內(nèi)的一組相鄰的符號(hào)給出的一個(gè)串。所以,可以通過從串的開始或結(jié)尾刪除一個(gè)或多個(gè)字符而由x獲得一個(gè)子串。
定義2子串,后綴和前綴x的子串是串x/=xixi+1…xj,1<=i<=j<=n。串xi=xin=xi...xn是串x的一個(gè)后綴,串xj=x1j=x1x2...xj是串x的一個(gè)前綴。
也用到字序列的概念。
定義3字序列字序列是一序列分離的、連續(xù)的字。字序列S=s1s2…sn由n個(gè)單詞(或串)s1、s2、至sn組成。
字序列是用序列邊界項(xiàng)分隔的。把序列邊界項(xiàng)的集合記為BTseq。序列邊界項(xiàng)的一個(gè)常用集合可能是{’\0’},其中\(zhòng)0表示文件結(jié)束標(biāo)記。
現(xiàn)在可以將近似詞匹配的概念描述如下。
給定串s=s1s2…sn和查詢項(xiàng)q=q1q2…qm。任務(wù)是尋找g在s中與原始查詢項(xiàng)q最多有k個(gè)誤差(error)的q的所有出現(xiàn)(occurrences)。近似性尺度確定如何計(jì)算q與潛在的匹配si...sj之間的誤差。
關(guān)于近似詞匹配的常用尺度是萊文斯坦距離(Levensteindistance)或編輯距離(參看V.I.Levenstein的“Binary codescapable of correcting deletions,insertions,and reversals”(俄語版),Doklady Akademii nauk SSSR,卷163,第4號(hào),頁845-848,1965年;以及“Cybernetics and Control Theory”,卷10,第8號(hào),頁707-710,1966年)。這個(gè)尺度被定義為將一個(gè)串轉(zhuǎn)換成另一個(gè)串所需的最小編輯操作數(shù)。一個(gè)編輯操作是由任何重寫規(guī)則給出的,例如●(a→ε),刪除●(ε→a),插入●(a→b),修改假設(shè)p和m是兩個(gè)大小分別為i和j的詞。則D(i,j)代表p的第i個(gè)前綴與m的第j個(gè)前綴之間的編輯距離。編輯距離被遞歸地定義為D(i,0)=D(0,i)=i 其中,如果pi=mj則δ(i,j)=0,否則δ(i,j)=1也有可能定義一個(gè)字序列中的字的水平上的近似匹配,這可作如下描述。
給定一個(gè)由n個(gè)字w1,w2…wn組成的正文T,其中每個(gè)字是字符串。序列模式P由m個(gè)字p1,p2,…pm組成。如果對于使得1<=i<=j<=n的某對i,j,序列p1,p2,…,pm與序列wi,wi+1,…,wj的不同最多有k個(gè)誤差,則說序列模式P在T中有一個(gè)近似的出現(xiàn)。還是用近似性尺度確定如何計(jì)算兩個(gè)序列之間的誤差。
要在搜索系統(tǒng)中被檢索的正文必須以便于搜索數(shù)據(jù)的方式被標(biāo)引。所以按照本發(fā)明,數(shù)據(jù)結(jié)構(gòu)是本發(fā)明的搜索系統(tǒng)的核心數(shù)據(jù)結(jié)構(gòu),是在所謂的后綴樹,特別是稀疏后綴樹的基礎(chǔ)上建立的。下文將定義這兩種結(jié)構(gòu)。后綴樹S(T)是正文T中所有可能的后綴的樹表示。將后綴樹S(T)中所有一元節(jié)點(diǎn)(unary node)與其子節(jié)點(diǎn)并置時(shí),產(chǎn)生一個(gè)緊致變體(compact variant)。
圖1表示關(guān)于正文T=“structure”的后綴樹。
本發(fā)明更特別地是在稀疏后綴樹的基礎(chǔ)上建立的。J.Kaerkkaeinen和E.Ukkonen在“Sparse Suffix Trees”(稀疏后綴樹)中介紹了這些稀疏后綴樹(第二屆國際計(jì)算與組合數(shù)學(xué)年會(huì)(COCOON’6)論文集,Springer Verlag,219-230頁),該文還是根據(jù)D.R.Morrison發(fā)表的“PATRICIA-Practical Algorithm toRetrieve Information Coded in Alphanumeric”(檢索以字母數(shù)字編碼的信息的實(shí)用算法)(ACM雜志第15期,514-534頁,1968)的概念。稀疏后綴樹的定義如下。
定義4稀疏后綴樹正文T的稀疏后綴樹SST(T)是一個(gè)只含有該正文的后綴樹ST(T)中出現(xiàn)的后綴的一個(gè)子集的后綴樹。
在用按照本發(fā)明的搜索系統(tǒng)搜索全部字時(shí),最好通過只存儲(chǔ)在字邊界起始的后綴來建立一個(gè)非均勻間隔的(non-evenly spaced)稀疏后綴樹。字間隔稀疏后綴樹的概念的定義如下。
定義5字間隔稀疏后綴樹正文T的字間隔稀疏后綴樹SSTWS(T)是一個(gè)只含有該正文中在字分隔符起始的后綴的稀疏后綴樹SST(T)。
圖2表示字間隔稀疏后綴樹的兩個(gè)例子。為加強(qiáng)可讀性,部分后綴被省略。圖2中,關(guān)于T=“to be the best”的字間隔稀疏后綴樹是左結(jié)構(gòu)的,關(guān)于T=“to make the only major modification”的字間隔稀疏后綴樹是右結(jié)構(gòu)的。
在本發(fā)明的搜索系統(tǒng)中,將正文自然地劃分成字,獨(dú)立地存儲(chǔ)在字間隔稀疏后綴樹中。由于用于搜索的原子搜索詞項(xiàng)字本身,最好每個(gè)后綴在字的結(jié)尾終止。這就把稀疏后綴樹縮減為一個(gè)所謂的PATRICIA特里樹(見所引用的Morrison的文章)。文獻(xiàn)中將特里樹定義為一個(gè)有根樹,其特點(diǎn)是,除根節(jié)點(diǎn)外的每個(gè)節(jié)點(diǎn)都含有一個(gè)字母符號(hào),同一節(jié)點(diǎn)任何兩個(gè)子節(jié)點(diǎn)都不含相同的符號(hào)。應(yīng)當(dāng)注意到,單詞trie(特里樹)是從單詞“retrieval”(檢索)派生的,因此表明特里樹是一種適合數(shù)據(jù)檢索的樹結(jié)構(gòu)。PATRICIA特里樹被定義成一個(gè)鍵字間隔稀疏后綴樹(KWS樹),其中在葉節(jié)點(diǎn)中存儲(chǔ)的后綴由鍵字定界符限制。圖3表示的一例PATRICIA特里樹代表鍵字集合{“avoid”,”abuse”,”become”,”breathe”,”say”}。本發(fā)明的搜索系統(tǒng)所用的結(jié)構(gòu)與PATRICIA特里樹不同,因?yàn)樵撍阉飨到y(tǒng)顯式地存儲(chǔ)字的序列信息。要縮短后綴長度,就要求改變?nèi)~節(jié)點(diǎn)的表示法。用后綴串本身代替指向原始正文的指針。圖4表示對如圖2中所示的相同的兩個(gè)串的這種后綴長度縮短。換言之,圖4表示的是具有在字邊界處切斷的后綴的字間隔稀疏后綴樹。圖中,代表T=“to be the best”的字間隔稀疏后綴樹顯示在左邊,關(guān)于T=“to make the only majormodification”的字間隔稀疏后綴樹顯示在右邊。葉節(jié)點(diǎn)將含有出現(xiàn)該葉節(jié)點(diǎn)所代表的字的所有位置的列表。
本發(fā)明不是用原始正文中發(fā)現(xiàn)的信息的隱式序列(implicitsequence),而是顯式地在字間隔稀疏后綴樹中存儲(chǔ)序列信息。這是用代表原始正文中相鄰字的葉節(jié)點(diǎn)之間的指針完成的。因?yàn)橹辽倌艿玫教囟ㄈ~節(jié)點(diǎn)所代表的字的所有出現(xiàn),所以必須向下一個(gè)相鄰葉添加一個(gè)指針。
葉節(jié)點(diǎn)只含有它代表的字的后綴,在遍歷出現(xiàn)列表(occurrencelist)中的序列指針時(shí),只揭示每個(gè)相鄰字的后綴。這是通過存儲(chǔ)葉節(jié)點(diǎn)中的整個(gè)字而不是僅僅存儲(chǔ)后綴來處理的,因此本發(fā)明的數(shù)據(jù)結(jié)構(gòu)在這方面也不同于PATRICIA特里樹。圖5表示用于顯式存儲(chǔ)的字序列信息的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)具有一個(gè)出現(xiàn)列表,列表帶有指向下一個(gè)相鄰字和指向其出現(xiàn)的指針。
按照本發(fā)明的搜索系統(tǒng)用一個(gè)PATRICIA特里樹來組織該出現(xiàn)列表(見所引用的Morrison的文章)。PATRICIA特里樹使搜索系統(tǒng)能訪問在時(shí)間0(|p2|)內(nèi)符合串p2的所有相鄰字的列表,其中|p2|當(dāng)然是p2的長度。通過用PATRICIA特里樹來組織出現(xiàn)的列表(list ofoccurrence),能獲得一個(gè)用于存儲(chǔ)來自正文的字并保存序列信息的完整定義的樹結(jié)構(gòu)。圖6表示的典型的葉節(jié)點(diǎn),既有一個(gè)代表所組織的出現(xiàn)列表的PATRICIA特里樹,又有額外的未排序的出現(xiàn)的列表。作為本發(fā)明的搜索系統(tǒng)中所用的出現(xiàn)列表的存儲(chǔ)要求的例子,一個(gè)有約742358個(gè)文件的數(shù)據(jù)庫共有333856744個(gè)單詞和一個(gè)有538244個(gè)不同單詞的詞匯表。數(shù)據(jù)庫的總量是2054.52MB。因此平均單詞長是6.45個(gè)字節(jié)。采用32位指針的稀疏后綴樹的每個(gè)內(nèi)部節(jié)點(diǎn)使用8個(gè)字節(jié)。假設(shè)每個(gè)字平均占用3個(gè)內(nèi)部節(jié)點(diǎn)。那么葉節(jié)點(diǎn)就需要6.45個(gè)字節(jié)來存儲(chǔ)整個(gè)字,加上用于指向出現(xiàn)列表的指針的32位。每個(gè)字共占用34.45個(gè)字節(jié),則總量為18.108MB。此外,出現(xiàn)列表的大小是每項(xiàng)4個(gè)字節(jié),如果要用完整形式的(full version),則每項(xiàng)12個(gè)字節(jié)。所以出現(xiàn)列表的總存儲(chǔ)要求的變動(dòng)范圍是1273MB至3820MB。采用稀疏后綴樹的數(shù)據(jù)結(jié)構(gòu)具有的大小將在原始正文的60%至200%之間。這與一個(gè)倒置文件(inverted file)的要求是可比的,但是按照本發(fā)明的搜索系統(tǒng)中所用的稀疏后綴樹提供更快的搜索,能進(jìn)行近似對比,并易于進(jìn)行序列對比。
在近似搜索中,用尺度來給出一個(gè)可能匹配的誤差度量(errormeasure)。按照本發(fā)明的搜索系統(tǒng)采用幾種尺度,特別是各尺度的獨(dú)特組合。這些尺度與組合尺度將在下文中作討論。
如上定義的編輯距離尺度允許直觀地應(yīng)用于字及字符的刪除、插入和修改操作。在比較短語時(shí)的常見誤差是缺失、多余或變化的字。所以,要對前文所定義的編輯距離尺度進(jìn)行修改和擴(kuò)充,以便適合于近似字序列對比的問題。對關(guān)于序列的編輯操作定義如下。
定義6序列的編輯操作為了將一個(gè)字序列S轉(zhuǎn)換成另一個(gè)字序列P,可以按以下重寫規(guī)則書寫對序列中的字所允許的編輯操作●(a→ε),從序列中刪除字a●(ε→a),向序列中插入字a●(a→b),將字a修改為字b●(ab→ba),相鄰字a和b的置換按照本發(fā)明的搜索系統(tǒng)不是以字符作為基本單位,而是對字進(jìn)行編輯操作,所以應(yīng)當(dāng)把字視為操作的基本單位。
成本函數(shù)Cedit(x→y)是一個(gè)常量,其定義為 其中,如果x=y則δ(x,y)=0,否則δ(x,y)=1(3)現(xiàn)在就能用以上所定義的編輯操作來定義序列的編輯距離。定義7序列的編輯距離序列的編輯距離尺度定義將序列S=s1,s2,…,sn與序列P=p1,p2,…,pm之間的距離Dseq(S,P)定義為將序列S轉(zhuǎn)換成序列P的一系列編輯操作的成本c(x→y)的最小和。
按照本發(fā)明的搜索系統(tǒng)對編輯操作的成本用所操作的字的大小進(jìn)行加權(quán),加強(qiáng)序列的編輯距離尺度。
定義8與字大小有關(guān)的序列的編輯距離與字大小有關(guān)的序列的編輯距離尺度被定義為將一個(gè)序列轉(zhuǎn)換成另一個(gè)所需的編輯操作的成本的最小總額。成本函數(shù)與操作數(shù)的字大小有關(guān)。
在按照本發(fā)明的搜索系統(tǒng)中,成本函數(shù)的定義由下列方程給出Cinsert(ε→a)=|a|/1Cdelete(a→ε)=|a|/1Ctranspose(ab→ba)=1 (4)Cchange(a→b)=max(||a|-|b||,1)/1其中1代表所比較的兩個(gè)序列中的字的平均長度。每個(gè)編輯操作的成本,由一個(gè)與序列的總長度的變化成比例的大小加權(quán),或者由當(dāng)前字長與有關(guān)序列中的平均字長的比例加權(quán)。
現(xiàn)在的距離尺度反映的是對該字長度與該字對該字序列的語義上下文的重要性之間的某種關(guān)系的假設(shè)。此外,按照本發(fā)明的搜索系統(tǒng)在使用修改編輯操作(a→b)時(shí)在利用字符級(jí)的相似性。將字a替換為另一個(gè)字b要涉及到這兩個(gè)字之間的相似性。因此將修改編輯操作的新的成本函數(shù)定義為cchange(a→b)=∂apprpx(a,b)max(||a|-|b||,i)i----(5)]]>其中δapprox(a,b)= D(a,b) (6)其中D(a,b)是字的歸一化編輯距離測量函數(shù),0意味全相似,1意味無相似。
按照本發(fā)明的搜索系統(tǒng)將序列的編輯距離尺度與公式(4)、(5)和(6)所給出的成本函數(shù)結(jié)合起來,其中,字的編輯距離尺度由公式(1)給出。這意味著僅當(dāng)正在對比的字互相的誤差超過k時(shí)才使用序列編輯操作。
按照本發(fā)明的搜索系統(tǒng)中所使用的算法,對所述結(jié)構(gòu)進(jìn)行高效的搜索。匹配是按照以上給出的尺度來尋找的。
字間隔稀疏后綴樹中的近似詞對比是通過編輯距離尺度的計(jì)算與后綴樹的遍歷的結(jié)合而進(jìn)行的。用偽碼編寫的一個(gè)這樣的算法在表Ⅰ中給出。
該算法改編自H.Shang和T.H.Merrettal提出的特里樹對比算法(trie-matching algorithm)(“Tries for Approximate StringMatching”(用于近似串對比的特里樹),IEEE Transactions onKnowledge and Data Engineering(IEEE知識(shí)與數(shù)據(jù)工程學(xué)報(bào)),1996年,卷5,號(hào)4,540-547頁)。按照Shang和Merrettal(在所引用文章中)的說法,該算法最壞情況下的期望運(yùn)行時(shí)間是0(k|∑|k)。
近似字序列對比要求計(jì)算所有可能的匹配的字序列編輯距離。然而,可以通過只對可能的字開始計(jì)算編輯距離來限制可能的匹配的數(shù)量。從序列中刪除一個(gè)字的成本決定可能的開始字的數(shù)量。如果刪除查詢序列PQ中前i個(gè)字的累積成本超過給定的誤差閾值(errorthreshold),則以該查詢的自第i個(gè)字開始的候選序列就不可能是個(gè)匹配。因此對于i個(gè)字的查詢序列PQ來說,最多要試試i個(gè)可能的開始字。由于樹的序列結(jié)構(gòu)中沒有后向指針(backpointer),所以將不能保證能獲得所有的匹配。增加后向指針則會(huì)解決這個(gè)問題。下面的表Ⅱ中以偽碼的形式給出了按照本發(fā)明的搜索系統(tǒng)所使用的近似字序列對比的算法。這個(gè)算法試圖以p1,p2…順序地對比第一個(gè)鍵字,測試所有可能的起始位置。
表Ⅱ中的ApproxSequenceMatch算法中的ApproxMatchRest函數(shù)由下面的表Ⅲ中的算法定義。該函數(shù)用一個(gè)初始誤差值對比剩下的序列。
表Ⅰ
表Ⅱ
表Ⅲ
表Ⅱ和Ⅲ中的算法是用與表Ⅰ中的算法相同的偽碼編寫的。
用于尋找符合序列中第一個(gè)字的葉節(jié)點(diǎn)的FindExact函數(shù),執(zhí)行對樹的簡單遍歷,其運(yùn)行時(shí)間是0|p1|,其中p1代表查詢序列PQ中的第一個(gè)字。編輯距離的計(jì)算,如果用直接的動(dòng)態(tài)程序,能在|P|2時(shí)間內(nèi)完成,如果用該計(jì)算算法的改進(jìn)版本,則能在0(k)時(shí)間內(nèi)完成(其中k代表誤差閾值),參看E.Ukkonen的“Finding ApproximatePatterns in Strings”(查找串中的近似結(jié)構(gòu))(Journal ofAlgorithms,1985,卷6,132-137頁)。
如果∑nocc(pi)代表每個(gè)字pi在字序列中出現(xiàn)的次數(shù)的總數(shù),則最壞情況的運(yùn)行時(shí)間是0(k∑nocc(pi))。
最后將簡要地討論在按照本發(fā)明的搜索系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的一個(gè)搜索引擎。具體來說,以按照本發(fā)明的搜索系統(tǒng)為基礎(chǔ)的搜索引擎是按近似搜索引擎(ASE)實(shí)現(xiàn)的,目的是作為一個(gè)索引大量文件集合和提供用于這些文件集合的精確和近似搜索的算法的搜索引擎。ASE將提供一個(gè)用于存儲(chǔ)大型正文或文件的集合的數(shù)據(jù)結(jié)構(gòu)。應(yīng)當(dāng)明白,該數(shù)據(jù)結(jié)構(gòu)可以從含有如圖形、影像、聲音的其它信息的文件生成,并且正文可以是格式化的和/或帶注解的。該數(shù)據(jù)結(jié)構(gòu)與以上討論的字間隔稀疏后綴樹完全相同,當(dāng)然也應(yīng)當(dāng)明白,這些字是搜索系統(tǒng)的關(guān)鍵字,所以也可以將字間隔稀疏后綴樹稱作鍵字間隔稀疏后綴樹(KWS樹)。ASE將含有在KWS樹中索引文件的算法。當(dāng)然,這些算法不構(gòu)成按照本發(fā)明的搜索系統(tǒng)的一部分,但是它們是本領(lǐng)域的熟練人員所熟知的,在文獻(xiàn)中有描述,例如參看J.Kaerkkaeinen和E.Ukkonen(的所引用的文章)和D.R.Morrison(的所引用的文章)。
按照本發(fā)明和在ASE中所使用的搜索系統(tǒng)采用的算法在KWS樹中既能進(jìn)行模式(pattern)的精確對比又能進(jìn)行近似對比。以上在表Ⅰ和表Ⅱ中給出的算法用于以非統(tǒng)一的編輯距離作為尺度的近似字和近似字序列對比。在KWS樹中查找長度m的鍵字p的精確匹配,在本領(lǐng)域中是已知的,容易以對樹結(jié)構(gòu)的簡單遍歷的方式來實(shí)現(xiàn)。表Ⅳ給出一個(gè)用偽碼編寫的用于精確鍵字對比的適當(dāng)算法。按照本發(fā)明的搜索系統(tǒng)將也能支持用于精確鍵字序列對比的算法。精確鍵字序列對比的算法在本領(lǐng)域中是已知的,容易以例如表Ⅴ中所示的用偽碼編寫的方式來實(shí)現(xiàn)。這里所給出的算法將查找第一個(gè)鍵字的精確匹配,如果有的話。然后它將對第一個(gè)鍵字的所有出現(xiàn),查看第二個(gè)鍵字是否符合查詢的第二個(gè)鍵字。如果符合,就用表Ⅴ中的MatchRest過程判斷這頭兩個(gè)鍵字的出現(xiàn)是否在整個(gè)序列中匹配。對于KWS樹中的近似鍵字對比,搜索系統(tǒng)執(zhí)行上述表Ⅰ中的算法。對于近似鍵字序列對比,搜索系統(tǒng)執(zhí)行上述表Ⅱ中的算法,以p1,p2…順序地對比第一個(gè)鍵字,測試所有可能的起始位置,用表Ⅲ中所給出的ApproxMatchRest函數(shù)去對比在特定位置起始的序列和處理初始誤差值。
最后,ASE將需要一個(gè)簡單的前端來賦予用戶對索引和查詢文件集合的控制。該前端也應(yīng)當(dāng)能提供文件集合的統(tǒng)計(jì)并提供一個(gè)用于例如通過WWW遠(yuǎn)程接入的網(wǎng)絡(luò)接口和一個(gè)本地服務(wù)器用戶接口。
按照本發(fā)明的搜索系統(tǒng)所用的ASE應(yīng)當(dāng)在便于容易地增加新的索引和搜索算法方面具有通用性。也應(yīng)當(dāng)有可能以容易的方式實(shí)現(xiàn)對有關(guān)每個(gè)文件的額外信息或鍵字的存儲(chǔ)。特別是,前端應(yīng)當(dāng)獨(dú)立于數(shù)據(jù)結(jié)構(gòu)和搜索算法,使得這些中的內(nèi)部交換對前者的設(shè)計(jì)沒有影響。
按照本發(fā)明的搜索系統(tǒng)的使用,應(yīng)當(dāng)將ASE設(shè)計(jì)得在數(shù)據(jù)結(jié)構(gòu)中有盡可能低的存儲(chǔ)開銷。也應(yīng)當(dāng)將搜索設(shè)計(jì)得盡可能地快。然而,這兩個(gè)因素之間一般要有個(gè)折衷。
表Ⅳ
表Ⅴ
總之,具有用于按照本發(fā)明的搜索系統(tǒng)的ASE將包含四個(gè)主要模塊。
1.用于在KWS樹中索引文件的文件索引模塊DIM。該模塊也應(yīng)當(dāng)含有支持幾種文件類型的擴(kuò)展。
2.以鍵字間隔稀疏后綴樹(KWS樹)為基礎(chǔ)的數(shù)據(jù)存儲(chǔ)模塊DSM。
3.用于搜索KWS樹的搜索算法模塊SAM,包含分別用于字和字序列的精確和/或近似對比的算法。
4.既包含本地服務(wù)器用戶接口又包含用于遠(yuǎn)程查詢的網(wǎng)絡(luò)接口的用戶接口前端模塊FEM。
ASE的這四個(gè)模塊共同配合,提供一個(gè)完整的搜索引擎功能。圖7表示不同模塊之間的數(shù)據(jù)流。索引文件集合的工作在由包含索引算法的文件索引模塊DIM中完成。當(dāng)然,該模塊并不是按照本發(fā)明的搜索系統(tǒng)的一部分,但是能被使用的索引算法在本領(lǐng)域是眾所周知的。文件中找到的正文被傳送到數(shù)據(jù)存儲(chǔ)模塊DSM上存儲(chǔ)。數(shù)據(jù)存儲(chǔ)模塊當(dāng)然是按照本發(fā)明的搜索系統(tǒng)的一部分,已經(jīng)申明是建立在KWS樹結(jié)構(gòu)的基礎(chǔ)上的。搜索算法模塊SAM含有用于搜索位于數(shù)據(jù)存儲(chǔ)模塊中的數(shù)據(jù)的算法。該模塊執(zhí)行按照本發(fā)明的搜索系統(tǒng),允許搜索過程查詢樹和節(jié)點(diǎn)信息的數(shù)據(jù)結(jié)構(gòu),同時(shí)保存狀態(tài)變量。前端模塊例如可以在工作站或個(gè)人電腦等等的上面實(shí)現(xiàn),提供如上所述的功能。
正如介紹中已經(jīng)申明的那樣,應(yīng)當(dāng)明白,按照本發(fā)明的搜索系統(tǒng)能以用商業(yè)上提供的計(jì)算機(jī)系統(tǒng)(包括工作站)上的合適的高級(jí)語言編寫的軟件的形式來實(shí)現(xiàn)。它也如所申明的那樣,能以專用處理器設(shè)備的形式實(shí)現(xiàn),它最好能包含大量并行處理器,能并行處理大的字序列,用大量的查詢字序列進(jìn)行近似對比。然后可以將處理器的固定操作參數(shù)以低級(jí)代碼的形式輸入,而從KWS樹結(jié)構(gòu)輸入的鍵字序列便于極快地處理大量數(shù)據(jù)的查詢,按照本發(fā)明的搜索系統(tǒng)由此將高度適合在例如萬維網(wǎng)上進(jìn)行搜索,所搜索的KWS樹結(jié)構(gòu)甚至大得足以索引萬維網(wǎng)上目前提供的所有文件,還能處理將來在萬維網(wǎng)上預(yù)期的數(shù)據(jù)量的增長。
權(quán)利要求
1.一種用于信息-特別是以正文T的形式存儲(chǔ)的信息-檢索的搜索系統(tǒng),其中,信息檢索以查詢Q與被檢索信息R之間的給定或不同程度的匹配而發(fā)生,其中,該搜索系統(tǒng)包含一個(gè)用于存儲(chǔ)正文T的數(shù)據(jù)結(jié)構(gòu),一個(gè)測量查詢Q與被檢索信息R之間匹配程度的尺度M,以及用于執(zhí)行搜索-特別是以鍵字為基礎(chǔ)的全文搜索-的搜索算法,其特征在于,該數(shù)據(jù)結(jié)構(gòu)包含一個(gè)以后綴樹ST(T)為形式的樹結(jié)構(gòu),用于存儲(chǔ)正文T中的字、字序列和符號(hào)序列的后綴;尺度M包含關(guān)于正文T中的字或符號(hào)與查詢Q之間匹配的近似度的編輯距離尺度與關(guān)于正文T中的字或符號(hào)的序列S與查詢序列P之間匹配的近似度的編輯距離尺度的組合,后一個(gè)編輯距離尺度包括對將一種字或符號(hào)的序列S轉(zhuǎn)換成另一種字或符號(hào)的序列P的編輯操作的成本函數(shù)進(jìn)行加權(quán),該搜索算法包含用于確定正文T與查詢Q各自的后綴樹表示中的字之間的匹配程度的第一算法和/或用于確定正文T與查詢Q各自的后綴樹表示中的字的序列之間的匹配程度的第二算法,所述第一和/或第二算法用以字、字序列、符號(hào)序列或者它們的組合為形式的查詢Q搜索數(shù)據(jù)結(jié)構(gòu),使得信息R被根據(jù)查詢Q而檢索出來,前者與后者之間具有規(guī)定的匹配程度。
2.按照權(quán)利要求1的搜索系統(tǒng),特征在于,該后綴樹ST(T)是一個(gè)只包含正文T中一個(gè)后綴子集的字間隔稀疏后綴樹SSTWS(T)
3.一種用于信息-特別是以正文T的形式存儲(chǔ)的信息-檢索的搜索系統(tǒng)中的方法,其中,正文T被分成多個(gè)字和字序列,一個(gè)字是符號(hào)的一個(gè)序列,并且其中每個(gè)字被結(jié)構(gòu)化為一個(gè)或者多個(gè)后綴,后綴是字中形成序列的符號(hào)的子集,該方法的特征在于,生成正文T的字間隔稀疏后綴樹SSTWS(T),以代表正文T中所有從一個(gè)字分隔符起始的后綴;在字間隔稀疏后綴樹SSTWS(T)中存儲(chǔ)正文T中的字的序列信息;生成一個(gè)字序列S和P的編輯距離尺度D(S,P),作為將序列S轉(zhuǎn)換成序列P的編輯操作的最小總成本,總成本是對于每個(gè)編輯操作的成本函數(shù)的總和;對于字序列S和P生成一個(gè)與字大小相關(guān)的編輯距離尺度DWS(S,P),作為將序列S轉(zhuǎn)換成序列P的最小總成本,該總成本是對于每個(gè)編輯操作的成本函數(shù)由關(guān)于在編輯操作中涉及的字大小的參數(shù)進(jìn)行加權(quán)的總和;以及通過對于所有匹配計(jì)算編輯距離D(SR,PQ),分別確定被檢索信息R和查詢Q的字序列SR和PQ之間的匹配。
4.按照權(quán)利要求3的方法,特征在于,還對把序列S變?yōu)樾蛄蠵的編輯操作,用一個(gè)代表序列S和P的符號(hào)之間的近似性的參數(shù)進(jìn)行加權(quán),由此在確定有關(guān)編輯操作的成本時(shí),將序列S和P之間的相似性考慮在內(nèi)。
5.按照權(quán)利要求3的方法,特征在于,通過計(jì)算查詢字序列PQ中限定數(shù)量的字的編輯距離D(SR,PQ)來限制匹配的數(shù)目。
6.按照權(quán)利要求1或2的搜索系統(tǒng)在近似搜索引擎中的使用。
全文摘要
一種用于信息檢索的搜索系統(tǒng)包含一個(gè)用于存儲(chǔ)正文T中的數(shù)據(jù)結(jié)構(gòu),一個(gè)包含分別關(guān)于正文T字和/或符號(hào)及其序列和序列P中的字和/或符號(hào)之間的匹配的近似程度的編輯距離尺度的組合尺度M,對將序列S的字或符號(hào)轉(zhuǎn)換成序列P的編輯操作的成本函數(shù)進(jìn)行加權(quán);和用于分別確定分別在正文T和查詢Q的后綴樹表示中的字或字序列之間的匹配程度的搜索算法。該算法以查詢Q搜索該數(shù)據(jù)結(jié)構(gòu),以與該查詢的具體匹配檢索信息。該搜索系統(tǒng)的一種用于信息檢索的方法生成字間隔稀疏后綴樹用于存儲(chǔ)正文T中的字的后綴作為字序列信息,以及一個(gè)用于字序列S和P的與字的大小有關(guān)的編輯距離尺度,并且包括編輯距離的字加權(quán)成本函數(shù),以及通過計(jì)算關(guān)于所有匹配的編輯距離確定字序列SR或被檢索的信息R與一個(gè)查詢Q的字序列PQ之間的匹配程度。還公開了該搜索算法在近似搜索引擎中的應(yīng)用。
文檔編號(hào)G06F17/30GK1317114SQ99810507
公開日2001年10月10日 申請日期1999年7月9日 優(yōu)先權(quán)日1998年7月10日
發(fā)明者K·M·里斯維克 申請人:快速檢索及傳遞公司