專利名稱:一種海量中文文件名快速模糊拼音查詢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)應(yīng)用技術(shù)領(lǐng)域,具體來講涉及一種支持中文模糊拼音快速查詢計(jì)算機(jī)中所有文件的方法。
背景技術(shù):
隨著存儲(chǔ)系統(tǒng)容量的不斷增長,計(jì)算機(jī)系統(tǒng)中保存的文件也越來越多。現(xiàn)在的普通個(gè)人筆記本電腦都會(huì)有超過100G的存儲(chǔ),保存著超過百萬計(jì)的文件。如何從這些海量文件中快速找到符合查詢要求的文件成為一個(gè)越來越重要的問題。海量信息查詢通常采用全文檢索的方法。但是全文檢索對(duì)文件名不合適,對(duì)中文文件名就更不合適。全文檢索的必要條件是有一個(gè)合適的分詞系統(tǒng),然后根據(jù)分詞結(jié)果對(duì)原始文檔進(jìn)行倒排序索引。但是文件名因?yàn)闅v史習(xí)慣/程序兼容性等多方面原因,基本沒有采用空格進(jìn)行分詞,所以對(duì)西文文件名也無法建立倒排序索引,至于中文則更不存在類似西文空格那樣的天然的分詞方案。目前的快速文件名查詢方法往往基于快速字符串匹配算法。比如GNU Gr印是最知名的字符串精確匹配程序,其采用內(nèi)循環(huán)展開的Boyer-Moore算法。AGrep程序則是一個(gè)知名的近似串匹配程序,其采用mi-Manber算法?,F(xiàn)有的針對(duì)文件名的快速查詢方法中所存在的不足有
1、 針對(duì)海量文件名的查詢速度不理想。即使針對(duì)個(gè)人用的普通電腦,利用Windows 自帶的文件名查詢工具進(jìn)行查詢耗時(shí)也在1分鐘以上。如果針對(duì)云計(jì)算的存儲(chǔ)中心或者企業(yè)級(jí)的文件存儲(chǔ)服務(wù)器,查詢速度會(huì)更慢。2、 文件名索引時(shí)太過簡單。現(xiàn)有的文件名快速查詢工具,比如Iinux下的 locate以及windows下的loCate32都建立文件名索引庫。但是這些索引庫只是簡單的保存所有的文件名,沒有對(duì)文件名進(jìn)行任何預(yù)處理。3、對(duì)中文模糊拼音查詢支持不好?,F(xiàn)有的知名文件查詢工具中還沒有支持中文模糊拼音查詢的,一些信息檢索系統(tǒng)中雖然有模糊拼音匹配功能,但是基于的是距離向量的近似字符串匹配方法。針對(duì)模糊拼音匹配問題,近似字符串匹配方法在性能上和精確度上都不如基于factor的多模式字符串匹配方法。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)上述技術(shù)問題,提出一種用于快速查詢所有匹配文件的支持中文模糊拼音查詢的方法。為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案如下 一種海量中文文件名快速模糊拼音查詢方法,包括如下步驟
1)判斷查詢字符串是否為中文拼音,如果為中文拼音則根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換并擴(kuò)展形成新的查詢字符串,如果不是中文拼音則查詢字符串不變;
2)將上述查詢字符串執(zhí)SktBackward Oracle Matching算法構(gòu)建模式串識(shí)別的神諭有限自動(dòng)機(jī);
3)遍歷文件名數(shù)據(jù)庫,對(duì)所述文件名數(shù)據(jù)庫中存儲(chǔ)的文件名進(jìn)行預(yù)過濾; 所述預(yù)過濾包括如下步驟
在所述文件名數(shù)據(jù)庫中將文件名長度少于查詢字符串長度的文件名進(jìn)行第一次過濾; 然后判斷查詢字符串中是否有“.”符號(hào),如果不包含“.”符號(hào),則在查詢時(shí)只匹配文件名的前綴,如果包含“.”符號(hào),則匹配時(shí)以“.”符號(hào)的位置為分割匹配文件名的后綴,將后綴不匹配的文件名進(jìn)行第二次過濾;
4)在文件名數(shù)據(jù)庫中對(duì)步驟3)預(yù)過濾后的文件名執(zhí)行SBOM算法匹配,對(duì)所有符合條件的查詢結(jié)果進(jìn)行排序并返回查詢結(jié)果。作為可選方案,所述模糊拼音規(guī)則默認(rèn)設(shè)置為“zh=z,ch=c, sh=s, ing=in, ang=an, eng=en”,并可根據(jù)用戶自主設(shè)定。作為可選方案,所述文件名數(shù)據(jù)庫中至少存儲(chǔ)有文件名、文件路徑、文件大小、文件時(shí)間和預(yù)處理信息,所述預(yù)處理信息包括文件類型、文件名中是否包含中文以及中文漢字個(gè)數(shù)、最后一個(gè)”.”符號(hào)在文件名中的位置;所述文件名、所述文件路徑、所述文件大小、 所述文件時(shí)間和所述預(yù)處理信息是通過對(duì)文件系統(tǒng)掃描處理后得到的。作為可選方案,所述步驟1)中根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換并擴(kuò)展的步驟包括將所述中文拼音根據(jù)所述模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換,然后將轉(zhuǎn)換后的拼音與對(duì)應(yīng)的漢字進(jìn)行關(guān)聯(lián)擴(kuò)展。作為可選方案,所述文件名數(shù)據(jù)庫將根據(jù)所述文件系統(tǒng)中的文件信息變化實(shí)時(shí)更新。一種海量中文文件名快速模糊拼音查詢系統(tǒng),包括文件名索引庫構(gòu)建模塊、字符串快速匹配算法模塊、漢字模糊拼音處理模塊和初始化拼音漢字關(guān)系對(duì)應(yīng)表;所述文件名索引庫構(gòu)建模塊用于實(shí)現(xiàn)掃描文件系統(tǒng)并建立文件名數(shù)據(jù)庫系統(tǒng);所述字符串快速匹配算法模塊用于將查詢字符串執(zhí)Skt Backward Oracle Matching算法并構(gòu)建模式串識(shí)別的神諭有限自動(dòng)機(jī)以及將查詢字符串與文件名數(shù)據(jù)庫中存儲(chǔ)的文件名執(zhí)行SBOM算法匹配; 所述漢字模糊拼音處理模塊用于將中文拼音根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換,然后將轉(zhuǎn)換后的拼音與對(duì)應(yīng)的漢字進(jìn)行關(guān)聯(lián)擴(kuò)展,形成新的查詢字符串;所述初始化拼音漢字關(guān)系對(duì)應(yīng)表用于存儲(chǔ)所述關(guān)聯(lián)關(guān)系并按漢字詞頻排序。本發(fā)明的有益效果在于 1、海量文件下的查詢速度快。首先由于建立實(shí)時(shí)的文件名數(shù)據(jù)庫,對(duì)文件的查詢無需遍歷整個(gè)文件系統(tǒng)。所以該方法的查詢速度遠(yuǎn)遠(yuǎn)高于windows自帶的文件查詢系統(tǒng),其次由于針對(duì)文件名的特性進(jìn)行預(yù)處理,通常情況下可以減少30%左右的字符串匹配次數(shù)。因?yàn)槲募ǔJ?. 3格式, 而查詢條件中往往沒有”.”符號(hào),所以完全可以只在前綴8中查詢文件名是否符合要求。 此外根據(jù)后綴名可以在用戶選擇了文件類型的情況下快速過濾掉不符合類型的文件,并且采用高效的基于factor的多模式字符串匹配算法,性能上明顯由類似Grep程序中采用的 Boyer-Moore 算法。2、支持中文快速查詢。通常的文件名查詢系統(tǒng)將中文和英文同等對(duì)待。但是中文字庫大且文件名中包含中文的少,所以對(duì)漢字進(jìn)行單獨(dú)處理能夠明顯加快查詢性能。比如操作系統(tǒng)自帶的大量文件都不包含中文,通過對(duì)文件名中的中文字符進(jìn)行簡單計(jì)數(shù)就能夠在進(jìn)行中文查詢時(shí)能夠快速排除這些文件。3、支持模糊拼音精確查詢。常見的模糊拼音查詢方法采用的是基于距離向量的近似字符串匹配方法。比如用戶輸入”shihu”,近似字符串匹配查詢的是在改變一個(gè)字母的情況下也能匹配的所有串。這樣雖然也能實(shí)現(xiàn)模糊拼音,卻包括的太多不需要的結(jié)果。比如 shahu和sihu都是只改變一個(gè)字母,但shahu明顯不屬于期望的查詢結(jié)果集。近似字符串匹配的正確用途是防止用戶輸入錯(cuò)誤,比如shihu錯(cuò)誤輸入為hsihu。模糊拼音查詢的本質(zhì)類似于英文大小寫無關(guān)查詢。比如“A”能匹配“a”,但是不能匹配“b”,雖然它們之間的距離都是1。同樣的”shihu”在模糊拼音規(guī)則下只能匹配”sihu”。所以模糊拼音查詢其實(shí)就是待查詢字符串?dāng)U展后的多字符串精確匹配問題,而不是一個(gè)近似匹配問題。本方法采用模糊拼音到詞語的對(duì)應(yīng)關(guān)系表擴(kuò)展查詢字符串,并采用基于factor的多模式字符串匹配算法,能在一次匹配過程中同時(shí)匹配多個(gè)字符串,顯著提高了模糊拼音查詢的精確度和速度。
圖1系統(tǒng)開發(fā)、部署與運(yùn)行過程; 圖2文件名匹配方法流程圖。
具體實(shí)施例方式下面將結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步的說明。1.首先開發(fā)文件名查詢系統(tǒng),該系統(tǒng)的核心部分包括文件名數(shù)據(jù)庫索引構(gòu)建模塊、漢字模糊拼音處理模塊、字符串快速匹配模塊,其中漢字字庫(詞庫)構(gòu)建拼音到詞語的對(duì)應(yīng)關(guān)系表的構(gòu)建在開發(fā)時(shí)完成,以減少系統(tǒng)部署和運(yùn)行時(shí)的開銷。對(duì)應(yīng)關(guān)系表中根據(jù)詞頻確定關(guān)系權(quán)重。2.當(dāng)將系統(tǒng)安裝到用戶端計(jì)算機(jī)時(shí),要求用戶輸入自己的模糊拼音規(guī)則。安裝時(shí)同時(shí)完成文件系統(tǒng)的掃描以建立文件名數(shù)據(jù)庫。該掃描步驟也可以在系統(tǒng)安裝后第一次啟動(dòng)時(shí)完成。對(duì)文件名進(jìn)行掃描處理時(shí),以“.”為分隔符將文件名分為兩部分,既前綴名和后綴名,對(duì)后綴名可以進(jìn)行文件類型分析,對(duì)前綴名對(duì)中文字?jǐn)?shù)進(jìn)行計(jì)數(shù)。當(dāng)用戶端計(jì)算機(jī)系統(tǒng)資源充足時(shí),可對(duì)文件名按多種排序方式進(jìn)行排序后保存。文件名查詢和全文查詢的一個(gè)區(qū)別是排序方式。文件名查詢后的結(jié)果往往需要按多種條件排序如匹配度、文件名拼音順序、文件大小、文件創(chuàng)建時(shí)間、文件修改時(shí)間、文件最后訪問時(shí)間等。對(duì)常用排序進(jìn)行預(yù)先排序能夠減少查詢后的排序步驟的時(shí)間開銷。3.當(dāng)系統(tǒng)運(yùn)行時(shí),啟動(dòng)文件系統(tǒng)監(jiān)視進(jìn)程動(dòng)態(tài)監(jiān)控文件系統(tǒng)變化,并相應(yīng)的更新文件名數(shù)據(jù)庫。4.當(dāng)用戶輸入查詢字符串時(shí),首先判斷該查詢字符串是否為中文拼音。如果是則采用用戶自定義的模糊拼音規(guī)則轉(zhuǎn)換并擴(kuò)展查詢字符串。針對(duì)轉(zhuǎn)換并擴(kuò)展后的字符串執(zhí)行基于factor的多模式字符串匹配的SBOM算法預(yù)處理步驟。SBOM算法全稱為kt Backward Oracle Matching算法。當(dāng)然也可以采用其它的基于factor的多模式字符串匹配算法,如 Multiple Shift-Or算法?;趂actor的算法在性能上優(yōu)于基于I^refix的算法(比如KMP 算法)和基于suffix的算法(比如Boyer-Moore算法)。然后遍歷所有的文件名數(shù)據(jù)庫,首先根據(jù)文件名長度過濾不符合要求的文件,接著根據(jù)中文字?jǐn)?shù)過濾不符合要求的文件,最后采用和預(yù)處理步驟同樣的字符串匹配算法過濾出符合條件的文件。如果沒有對(duì)文件名數(shù)據(jù)庫進(jìn)行預(yù)排序,則根據(jù)用戶的排序條件排序查詢結(jié)果集。最后返回符合要求的查詢結(jié)果集。其具體的流程如圖1所示
1、一種海量中文文件名快速模糊拼音查詢系統(tǒng)的三個(gè)主要模塊的開發(fā)以及初始化拼音漢字關(guān)系對(duì)應(yīng)表。三個(gè)主要模塊為
a)文件名數(shù)據(jù)庫索引構(gòu)建模塊開發(fā),實(shí)現(xiàn)掃描文件系統(tǒng)構(gòu)建文件名數(shù)據(jù)庫系統(tǒng)功能。b)字符串快速匹配算法模塊開發(fā),基于kt Backward Oracle Matching (SBOM) 算法實(shí)現(xiàn)。c)漢字模糊拼音處理模塊開發(fā),實(shí)現(xiàn)模糊拼音到漢字對(duì)應(yīng)關(guān)系;
d)初始化拼音漢字關(guān)系對(duì)應(yīng)表,格式為拼音_>漢字列表,比如”hanzi”-〉”漢字,漢子,寒子,汗?jié)n,憨子,韓資”。漢字列表按詞頻排序。2、部署海量中文文件名快速模糊拼音查詢系統(tǒng)
a)系統(tǒng)安裝時(shí)要求用戶輸入自己的模糊拼音規(guī)則。如果用戶不輸入,則采用缺省的模糊拼音規(guī)則“zh=z,ch=c, sh=s, ing=in, ang=an, eng=en"0根據(jù)模糊拼音擴(kuò)展拼音漢字關(guān)系對(duì)應(yīng)表。b)部署時(shí)同時(shí)完成文件系統(tǒng)的掃描以建立文件名數(shù)據(jù)庫。文件名數(shù)據(jù)庫中至少保持如下字段的信息文件名、文件路徑、文件大小、文件時(shí)間、預(yù)處理信息(文件類型、文件名中是否包含中文以及中文漢字個(gè)數(shù)、最后一個(gè)”.”符號(hào)在文件名中的位置)等。對(duì)文件名進(jìn)行掃描處理時(shí),首先找到最后一個(gè)”.”符號(hào)在文件名中的位置,然后以“.”為分隔符將文件名分為兩部分,即前綴名和后綴名。對(duì)后綴名可以進(jìn)行文件類型分析,比如jpg/jpeg/gif/ bmp都屬于圖片類型、doc/docx/xls/xlsx/ppt/pptx/pps等屬于office文檔類型等。如果是Iinux文件系統(tǒng),則采用file程序調(diào)用判斷文件類型。對(duì)前綴名中文字?jǐn)?shù)進(jìn)行計(jì)數(shù)。3、系統(tǒng)安裝完成后運(yùn)行時(shí)實(shí)時(shí)監(jiān)控文件系統(tǒng)中文件信息的變更。對(duì)于windows操作系統(tǒng),采用ReadDirectoryChanges系統(tǒng)調(diào)用監(jiān)控文件系統(tǒng)的變更;對(duì)于Iinux類操作系統(tǒng),采用inotify系統(tǒng)調(diào)用監(jiān)控文件系統(tǒng)的變更。文件系統(tǒng)中文件信息的變更實(shí)時(shí)更新的文件名索引數(shù)據(jù)庫中。4、查詢時(shí),采用如圖2所示的方法查詢符合條件的文件。主要包括以下步驟
a)當(dāng)用戶輸入查詢字符串時(shí),首先判斷該查詢字符串是否為中文拼音。如果是則采用用戶自定義的模糊拼音規(guī)則擴(kuò)展查詢字符串。比如”hanzi”會(huì)被識(shí)別為漢語拼音,然后轉(zhuǎn)換為” hanzi,hangzi”,然后根據(jù)轉(zhuǎn)換后拼音字符查詢拼音漢字關(guān)系對(duì)應(yīng)表,從而擴(kuò)展得到包括漢字在內(nèi)的新查詢字符串,例如“hanzi,hangzi,漢字,漢子,寒子,汗?jié)n,憨子,韓資”
b)針對(duì)擴(kuò)展后的字符串執(zhí)行kt Backward Oracle Matching (SBOM)算法預(yù)處理步驟。該預(yù)處理步驟主要是構(gòu)建一個(gè)模式串識(shí)別的一個(gè)神諭有限自動(dòng)機(jī)。具體算法偽代碼如下
構(gòu)造神諭(Oracle)自動(dòng)機(jī)步驟(輸入P= \ρ\ ρ2,…,//},為待匹配的多個(gè)擴(kuò)展后
查詢字符串)OR_ trie — TrieO0)單詞查找樹
δ^是它的轉(zhuǎn)移函數(shù)將對(duì)應(yīng)于整個(gè)字符串//的狀態(tài)為終結(jié)符 I — OR—trie 的根 SOR (/) — θ
For Current in文件遍歷序列Do
Parent 一 0R_trie當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) σ 一 hkParent 至Ij Current 的標(biāo)記 Down 一 Sor (Parent)
While Down Φ θ AND δ 0R (J)own, σ ) = θ Do δ 0R φ own, σ) — Current Down 一 Sor Φ own) End of while If Down 一 θ Then
Sor {Current) 一 δ 0R φ own, σ ) Else Sor {Current) 一 I End of if
End of for
}
c) 遍歷所有的文件名數(shù)據(jù)庫,查詢符合查詢條件的文件。主要步驟包括 1.首先根據(jù)文件名長度過濾不符合要求的文件。比如待查詢串”hanzi”有五個(gè)字符, 而文件名為四個(gè)字符” XXXX”,則不管是哪四個(gè)字符都不可能匹配。2.接著根據(jù)中文字?jǐn)?shù)過濾不符合要求的文件,其原理同上。3.判斷待查詢串中是否包含”.”符號(hào),根據(jù)判斷結(jié)果采取不同的查詢步驟。如果不包含”.”符號(hào),則在查詢時(shí)只匹配文件前綴名。如果包含”.”符號(hào),則匹配時(shí)以”.”符號(hào)的位置為分割分別匹配文件名數(shù)據(jù)庫中文件名的后綴和前綴。比如查詢串”hanzi”不包含”.”符號(hào),那么可以只匹配文件名前綴。對(duì)于常見的8. 3文件格式,只需要匹配8位前綴名,能夠減少1/3的查詢時(shí)間。如果待查詢串包含”.”符號(hào),比如“XX. jpg”,那么在匹配文件名時(shí),先匹配后綴部分,如果后綴名符合,再匹配前綴部分。4.對(duì)于擴(kuò)展后的文件名多模式字符串執(zhí)行SBOM算法進(jìn)行匹配,其具體算法偽代碼如下
SBOM算法(輸入?yún)?shù)f = \p\ p\ ...,pr}為待匹配的多個(gè)擴(kuò)展后查詢字符串,T
=^t2 ... tn代表文件名,η代表文件名長度)
{
min —待匹配串的最大長度 pos 一 0 Il當(dāng)前比較位置 While pos η - min Do
Current — Or的初始狀態(tài) j 一 min
權(quán)利要求
1.一種海量中文文件名快速模糊拼音查詢方法,其特征在于,包括如下步驟1)判斷查詢字符串是否為中文拼音,如果為中文拼音則根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換并擴(kuò)展形成新的查詢字符串,如果不是中文拼音則查詢字符串不變;2)將上述查詢字符串執(zhí)SktBackward Oracle Matching算法構(gòu)建模式串識(shí)別的神諭有限自動(dòng)機(jī);3)遍歷文件名數(shù)據(jù)庫,對(duì)所述文件名數(shù)據(jù)庫中存儲(chǔ)的文件名進(jìn)行預(yù)過濾;所述預(yù)過濾包括如下步驟在所述文件名數(shù)據(jù)庫中將文件名長度少于查詢字符串長度的文件名進(jìn)行第一次過濾; 然后判斷查詢字符串中是否有“.”符號(hào),如果不包含“.”符號(hào),則在查詢時(shí)只匹配文件名的前綴,如果包含“.”符號(hào),則匹配時(shí)以“.”符號(hào)的位置為分割匹配文件名的后綴,將后綴不匹配的文件名進(jìn)行第二次過濾;4)在文件名數(shù)據(jù)庫中對(duì)步驟3)預(yù)過濾后的文件名執(zhí)行SBOM算法匹配,對(duì)所有符合條件的查詢結(jié)果進(jìn)行排序并返回查詢結(jié)果。
2.根據(jù)權(quán)利要求1所述的一種海量中文文件名快速模糊拼音查詢方法,其特征在于, 所述模糊拼音規(guī)則默認(rèn)設(shè)置為“zh=z,ch=c, sh=s, ing=in, ang=an, eng=en”,并可根據(jù)用戶自主設(shè)定。
3.根據(jù)權(quán)利要求1所述的一種海量中文文件名快速模糊拼音查詢方法,其特征在于, 所述文件名數(shù)據(jù)庫中至少存儲(chǔ)有文件名、文件路徑、文件大小、文件時(shí)間和預(yù)處理信息,所述預(yù)處理信息包括文件類型、文件名中是否包含中文以及中文漢字個(gè)數(shù)、最后一個(gè)”.”符號(hào)在文件名中的位置;所述文件名、所述文件路徑、所述文件大小、所述文件時(shí)間和所述預(yù)處理信息是通過對(duì)文件系統(tǒng)掃描處理后得到的。
4.根據(jù)權(quán)利要求1所述的一種海量中文文件名快速模糊拼音查詢方法,其特征在于, 所述步驟1)中根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換并擴(kuò)展的步驟包括將所述中文拼音根據(jù)所述模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換,然后將轉(zhuǎn)換后的拼音與對(duì)應(yīng)的漢字進(jìn)行關(guān)聯(lián)擴(kuò)展。
5.根據(jù)權(quán)利要求1所述的一種海量中文文件名快速模糊拼音查詢方法,其特征在于, 所述文件名數(shù)據(jù)庫將根據(jù)所述文件系統(tǒng)中的文件信息變化實(shí)時(shí)更新。
6.一種海量中文文件名快速模糊拼音查詢系統(tǒng),其特征在于,包括文件名索引庫構(gòu)建模塊、字符串快速匹配算法模塊、漢字模糊拼音處理模塊和初始化拼音漢字關(guān)系對(duì)應(yīng)表;所述文件名索引庫構(gòu)建模塊用于實(shí)現(xiàn)掃描文件系統(tǒng)并建立文件名數(shù)據(jù)庫系統(tǒng);所述字符串快速匹配算法模塊用于將查詢字符串執(zhí)行kt Backward Oracle Matching算法并構(gòu)建模式串識(shí)別的神諭有限自動(dòng)機(jī)以及將查詢字符串與文件名數(shù)據(jù)庫中存儲(chǔ)的文件名執(zhí)行SBOM算法匹配;所述漢字模糊拼音處理模塊用于將中文拼音根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換,然后將轉(zhuǎn)換后的拼音與對(duì)應(yīng)的漢字進(jìn)行關(guān)聯(lián)擴(kuò)展,形成新的查詢字符串;所述初始化拼音漢字關(guān)系對(duì)應(yīng)表用于存儲(chǔ)所述關(guān)聯(lián)關(guān)系并按漢字詞頻排序。
全文摘要
本發(fā)明公開了一種海量中文文件名快速模糊拼音查詢方法,包括如下步驟1)判斷查詢字符串是否為中文拼音,如果為中文拼音則根據(jù)模糊拼音規(guī)則進(jìn)行轉(zhuǎn)換并擴(kuò)展形成新的查詢字符串,如果不是中文拼音則查詢字符串不變;2)將上述查詢字符串執(zhí)行SetBackwardOracleMatching算法構(gòu)建模式串識(shí)別的神諭有限自動(dòng)機(jī);3)遍歷文件名數(shù)據(jù)庫,對(duì)所述文件名數(shù)據(jù)庫中存儲(chǔ)的文件名進(jìn)行預(yù)過濾;4)在文件名數(shù)據(jù)庫中對(duì)步驟3)預(yù)過濾后的文件名執(zhí)行SBOM算法匹配,對(duì)所有符合條件的查詢結(jié)果進(jìn)行排序并返回查詢結(jié)果具有海量文件下的查詢速度快、支持中文快速查詢、支持模糊拼音精確查詢等特點(diǎn)。
文檔編號(hào)G06F17/30GK102236706SQ20111016394
公開日2011年11月9日 申請(qǐng)日期2011年6月17日 優(yōu)先權(quán)日2011年6月17日
發(fā)明者李瑩, 袁新宇 申請(qǐng)人:浙江大學(xué)