專利名稱::用于搜索多個串的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般地涉及信息處理的
技術(shù)領(lǐng)域:
,更具體而言,涉及用于信息搜索的方法和系統(tǒng)。
背景技術(shù):
:隨著計算機和網(wǎng)絡(luò)相關(guān)技術(shù)的發(fā)展,越來越多的人執(zhí)行數(shù)字搜索來識別或找到數(shù)字文檔中滿足他們的需求的特定內(nèi)容。例如,人們(例如父母)或權(quán)威機構(gòu)可以嘗試在孩子們可獲得的數(shù)字文檔中找到某些不適合孩子的限制內(nèi)容(例如串、表達或詞),然后使得孩子們遠離這些內(nèi)容。但是,在很多情形中,由于例如數(shù)字文檔的大小和/或數(shù)量龐大,人們或權(quán)威機構(gòu)識別或找到這些限制內(nèi)容是一項耗時的任務(wù)。因此,需要改進的搜索方法,用來執(zhí)行高效的搜索和減少搜索時間。
發(fā)明內(nèi)容本申請的目的是要提供用于基于多個串的第一字和長度的組合來高效地執(zhí)行對多個串的搜索以減少搜索時間的系統(tǒng)和方法。根據(jù)本申請的第一方面,提供了一種用于通過使用一個或多個處理器執(zhí)行駐留在計算機中的指令來從文本中搜索多個串的系統(tǒng)。該系統(tǒng)包括第一存儲設(shè)備,用于存儲分別以第一圖樣字開始的圖樣串;以及第二存儲設(shè)備,用于存儲以第一圖樣字開始的圖樣串的第一圖樣字和相應(yīng)的圖樣長度的組合。該系統(tǒng)還包括搜索引擎,用于在文本中迭代地識別與所述第一圖樣字之一相匹配的字以設(shè)置為當(dāng)前字;提取器,用于迭代地提取以所述當(dāng)前字開始并具有與圖樣長度之一相等的子串長度的子串;以及比較器,用于迭代地將所述子串與具有與該子串的第一圖樣字和長度相同的第一圖樣字和串長度的每個圖樣串相比較。該系統(tǒng)還可以包括第三存儲設(shè)備,用于在該子串與圖樣串之一相匹配的情況下存儲與該子串相關(guān)的信息。根據(jù)本申請的另一方面,提供了一種用于通過使用一個或多個處理器執(zhí)行駐留在計算機中的指令來從文本中搜索多個串的方法。該方法包括將分別以第一圖樣字開始的圖樣串存儲在第一存儲設(shè)備中;并將分別以第一圖樣字開始的圖樣串的第一圖樣字和相應(yīng)的圖樣長度的組合存儲在第二存儲設(shè)備中。該方法還包括利用搜索引擎在文本中迭代地識別與所述第一圖樣字之一相匹配的字,以設(shè)置為當(dāng)前字;利用搜索引擎迭代地提取以所述當(dāng)前字開始并具有與圖樣長度之一相等的子串長度的子串;利用搜索引擎迭代地將該子串與具有與該子串的第一圖樣字和長度相同的第一圖樣字和串長度的每個圖樣串相比較;以及如果該子串與圖樣串之一相匹配,則將與該子串相關(guān)的信息存儲在第三存儲設(shè)備中。本申請的系統(tǒng)和方法可以在文本中高效地找到和定位一系列以使用大字符集(charset)的語言(例如中文)書寫的預(yù)先定義的圖樣串(例如中文詞)。本申請所采用的技術(shù)考慮使用大字符集的語言的特性,并且可以獲得線性的運行時間并減少搜索時間。該技術(shù)可被例如用于在公告板系統(tǒng)(BBS)線程中禁止包含一個或多個預(yù)先定義的圖樣字的文本。在附圖中以示例的方式而非限制的方式圖示出本發(fā)明的實施例,附圖中的相似標號指示相似元件,在附圖中圖1是圖示出根據(jù)示例性實施例的用于從文本中搜索多個目標圖樣串(targetpatternstring)的系統(tǒng)的框圖;圖2是圖示出根據(jù)示例性實施例的用于從文本中搜索多個目標圖樣串的方法的流程圖;以及圖3是以計算機系統(tǒng)的示例性形式圖示出根據(jù)示例性實施例的機器的框圖。具體實施例方式用于從文本中搜索多個目標圖樣串的系統(tǒng)和方法將被描述。在以下描述中,為了說明而提出多個具體細節(jié),以便對本發(fā)明提供全面理解。但是,本領(lǐng)域技術(shù)人員應(yīng)該明了,本發(fā)明無需這些具體細節(jié)也能夠被實施。在很多情形中,人們可以嘗試搜索數(shù)字文檔來找到和定位某些特定內(nèi)容。例如,某些父母或權(quán)威機構(gòu)可以嘗試搜索對孩子們開放的數(shù)字文件,以確定在數(shù)字文件中是否有以使用大字符集的亞洲語言(例如,中文)書寫的有害內(nèi)容。這些有害內(nèi)容可以是不適合孩子的多個預(yù)定目標圖樣串(例如中文詞或字),例如“色情”、“色情網(wǎng)”、“色情圖片”、“暴力”和“暴力電視劇”等等。每個目標圖樣串(例如“色情網(wǎng)”)具有一第一字(例如“色”)和一圖樣串長度(例如3)。圖1是圖示出根據(jù)示例性實施例的用于從文本中搜索多個目標圖樣串的系統(tǒng)100的框圖。在某些實施例中,系統(tǒng)100可以包括第一存儲設(shè)備10、第二存儲設(shè)備20、第三存儲設(shè)備30和搜索引擎40。系統(tǒng)100還可以包括一個或多個處理器50,用于執(zhí)行保留在計算機中的指令來操作其他組件。在某些實施例中,第一存儲設(shè)備10可以存儲預(yù)先定義的目標圖樣串(例如,“色情”、“色情網(wǎng)”、“色情圖片”、“暴力”和“暴力電視劇”),這些目標圖樣串各自具有第一字(例如,“色”或“暴”)及其圖樣串長度(例如,2、3、4或5)。第一存儲設(shè)備10可以包括一Hashkt(散列集合)。該HashSet是^^(集合)接口的具體實現(xiàn)方式。它創(chuàng)建使用散列表的聚集(collection)以用于存儲。散列表通過使用被稱為散列化(hashing)的機制來存儲信息。在某些實施例中,系統(tǒng)100還可以包括用戶接口60,其可以用來接收將被存儲在第一存儲設(shè)備10中的目標圖樣串。在某些實施例中,第二存儲設(shè)備20可以存儲目標圖樣串(例如,“色情”、“色情網(wǎng)”、“色情劇”、“色情圖片”、“暴力”和“暴力電視劇”)的第一字(例如,“色”或“暴”)和圖樣串長度(例如,2、3、4或5)的唯一組合(例如,<“色”,(2,3,4)>和<“暴”,(2,5)>)。以第一圖樣字(例如“色”)開始的圖樣串(例如,“色情”、“色情網(wǎng)”、“色情劇”、“色情圖片”)的第一圖樣字與圖樣長度(例如,2、3、3、4)的組合(例如<“色”,(2,3,4)是不重復(fù)的。第二存儲設(shè)備20可以包括至少一個HashMap(散列圖)。HashMap指一種數(shù)據(jù)結(jié)構(gòu),其使用散列函數(shù)來將某些標識符或關(guān)鍵字(key)高效地映射到關(guān)聯(lián)的值(例如,它們的電話號碼)。散列函數(shù)用來將關(guān)鍵字轉(zhuǎn)換成將從中尋找相應(yīng)值的陣列元素(槽(slot)或桶(bucket))的索引。在某些實施例中,搜索引擎40可以從文本開頭迭代地識別與第一圖樣字之一(例如“色”)相匹配的字,并將該匹配字設(shè)置為文本中的當(dāng)前字。在某些實施例中,搜索引擎40可以迭代地提取以當(dāng)前字(例如“色”)開始并具有等于目標圖樣串長度之一(例如2)的子串長度的子串。在某些實施例中,搜索引擎40可以迭代地將該子串與具有分別與該子串的第一字和串長度相同的第一圖樣字(例如“色”)和串長度(例如2)的每個目標圖樣串(例如“色情”)相比較。如果提取出的子串與目標圖樣串之一(例如“色情”)相匹配,與該子串相關(guān)的信息則可以被存儲在第三存儲設(shè)備30中。與該子串相關(guān)的信息可以包括該子串的位置。這一過程一直前進到到達文本結(jié)尾。在某些實施例中,定位到的字串被加亮以警示用戶。在某些實施例中,系統(tǒng)100可以包括顯示器70,用來顯示與存儲在第三存儲設(shè)備30中的子串相關(guān)的信息。系統(tǒng)100可以在文本中高效地找到和定位與預(yù)先定義的目標圖樣串中的一個或多個相匹配的子串,以減少搜索時間。圖2是圖示出根據(jù)示例性實施例的用于從文本中搜索多個目標圖樣串的方法200的流程圖。在某些實施例中,在操作202處,將多個目標圖樣串(例如,“色情”、“色情網(wǎng)”、“色情劇”、“色情圖片”、“暴力”和“暴力電視劇”)分別存儲在第一存儲設(shè)備10中。這些目標圖樣串分別以第一圖樣字(例如“色”或“暴”)開始。在操作204處,將以第一圖樣字(例如“色”或“暴”)開始的目標圖樣串(例如,“色情”、“色情網(wǎng)”、“色情劇”、“色情圖片”、“暴力”和“暴力電視劇”)的第一圖樣字(例如“色”或“暴”)和相應(yīng)圖樣長度(例如2、3、4或5)的唯一組合(例如,<“色”,2,3,4>)和<“暴”,2,5>存儲在第二存儲設(shè)備20中。在操作206處,利用搜索引擎40來在文本中迭代地識別與第一圖樣字之一(例如“色”)相匹配的字,以設(shè)置為當(dāng)前字。在操作208處,利用搜索引擎40迭代地提取以當(dāng)前字(例如“色”)開始并具有與目標圖樣串長度之一(例如2)相等的子串長度的子串。在操作210處,利用搜索引擎40迭代地將該子串與具有分別與該子串的第一圖樣字和子串長度相同的第一圖樣字(例如“色”)和目標串長度(例如2、的每個目標圖樣串(例如“色情”)相比較。如果該子串與目標圖樣串之一(例如“色情”)匹配,則在操作212處,將與該子串相關(guān)的信息存儲在第三存儲設(shè)備30中。與該子串相關(guān)的信息可以包括該子串的位置。操作206到212被重復(fù),直到到達文本的結(jié)尾。在操作214處,利用顯示器70來顯示與存儲在第三存儲設(shè)備30中的所有子串相關(guān)的信息。實施例的操作可以分兩個階段來執(zhí)行初始化和處理。在初始化階段,目標圖樣詞(被搜索的詞)被放入HashSet中,并且每個目標圖樣詞的第一字和長度被放入HashMap中。由于JAVA中的HashMap不允許重復(fù)的關(guān)鍵字,因此第一字相同的圖樣詞的不同長度被放入HashMap。在處理階段,文本從開頭起被迭代處理。文本的每個字都被檢查。如果在HashMap中找到當(dāng)前字,則可能當(dāng)前位置的子串是圖樣詞。從HashMap獲得可能的長度,并針對每個可能長度,提取出根據(jù)當(dāng)前長度的子串,以檢查其是否在Hashkt中。如果獲得命中,則在文本中找到目標圖樣詞,開始位置是當(dāng)前位置并且長度是當(dāng)前長度。否則,過程前進到下一可能長度。如果所有可能長度都已被處理,過程則前進到文本的下一字。假設(shè)文本長度為M,并且存在N個目標圖樣串。在初始化階段所需時間為A*N,其中A是包括用于將詞存儲到HashSet中、提取出子串的第一字并且將字和長度存儲到HashMap中的時間的常數(shù)。處理階段所需時間為B*M,其中B是包括用于在HashMap中查找字、在發(fā)現(xiàn)命中的情況下提取出子串以及在Hashkt中查找該子串的時間的常數(shù)。該算法的總時間復(fù)雜度是(A*N+B*M)的函數(shù)。圖3是以計算機系統(tǒng)300的示例性形式圖示出一機器的框圖,在該計算機系統(tǒng)300中可以執(zhí)行用于致使機器執(zhí)行這里討論的方法中的任意一種方法的指令序列的集合。在替換實施例中,該機器可以是服務(wù)器計算機、客戶端計算機、個人計算機(PC)、tabletPC、機頂盒(STB)、個人數(shù)字助理(PDA)、蜂窩電話、網(wǎng)絡(luò)工具、網(wǎng)絡(luò)路由器、交換機或網(wǎng)橋,或能夠執(zhí)行指定將由該機器采取的動作的指令集合的任意機器。此外,雖然只有單個機器被示出,但是術(shù)語“機器”也可以包括多個機器的任意聚集,這些機器單獨地或聯(lián)合地執(zhí)行指令集合來執(zhí)行這里論述的方法中的任意一種或多種方法。示例性計算機系統(tǒng)300包括處理器302(例如中央處理單元(CPU)、圖形處理單元(GPU)或其兩者)、主存儲器304和靜態(tài)存儲器306,它們經(jīng)由總線308彼此通信。計算機系統(tǒng)300還可以包括視頻顯示單元310(例如液晶顯示器(LCD)或陰極射線管(CRT))。計算機系統(tǒng)300還包括字母數(shù)字輸入設(shè)備312(例如鍵盤)、光標控制設(shè)備314(例如鼠標)、盤驅(qū)動單元316、信號生成設(shè)備328(例如揚聲器)和網(wǎng)絡(luò)接口設(shè)備320。盤驅(qū)動單元316包括機器可讀介質(zhì)322,其上存儲了體現(xiàn)這里描述的方法或功能中的任意一種或多種的一個或多個指令集合(例如軟件324)。軟件3M在被計算機系統(tǒng)300執(zhí)行期間還可以完全或至少部分駐留在主存儲器304和/或處理器320中,主存儲器304和處理器320也構(gòu)成機器可讀介質(zhì)。軟件3還可以經(jīng)由網(wǎng)絡(luò)接口設(shè)備320被在網(wǎng)絡(luò)3上發(fā)送或接收。雖然機器可讀介質(zhì)322在示例性實施例中被示出為單個介質(zhì),但是術(shù)語“機器可讀介質(zhì)”應(yīng)該被認為包括存儲一個或多個指令集合的單個介質(zhì)或多個介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫和/或關(guān)聯(lián)的緩存和服務(wù)器)。術(shù)語“機器可讀介質(zhì)”還將被認為包括能夠存儲、編碼或承載如下指令集合的任意介質(zhì),所述指令集合被機器執(zhí)行并致使機器執(zhí)行本發(fā)明的實施例的方法或操作中的任意一種或多種。術(shù)語“機器可讀介質(zhì)”因此將被認為包括(但不局限于)固態(tài)存儲器、光和磁介質(zhì)以及載波信號。因此,從文本搜索多個目標圖樣串的方法和系統(tǒng)已被描述。雖然本發(fā)明已經(jīng)參考具體的示例性實施例進行了描述,但是將會明了,在不脫離本發(fā)明的更寬精神和范圍的情況下可以對這些實施例作出各種修改和改變。因此,說明書和附圖將被視為示例性的而非限制性的。權(quán)利要求1.一種用于通過使用一個或多個處理器執(zhí)行駐留在計算機中的指令來從文本中搜索多個串的方法,該方法包括將分別以第一圖樣字開始的圖樣串存儲在第一存儲設(shè)備中;將分別以第一圖樣字開始的圖樣串的第一圖樣字和相應(yīng)的圖樣長度的組合存儲在第二存儲設(shè)備中;利用搜索引擎在文本中迭代地識別與所述第一圖樣字之一相匹配的字,以設(shè)置為當(dāng)前字;利用所述搜索引擎迭代地提取以所述當(dāng)前字開始并具有與圖樣長度之一相等的子串長度的子串;利用所述搜索引擎迭代地將所述子串與具有與該子串的第一圖樣字和長度相同的第一圖樣字和串長度的每個圖樣串相比較;以及如果該子串與圖樣串之一相匹配,則將與該子串相關(guān)的信息存儲在第三存儲設(shè)備中。2.如權(quán)利要求1所述的方法,還包括從用戶界面接收所述圖樣串。3.如權(quán)利要求1所述的方法,還包括利用顯示器顯示與存儲在第三存儲設(shè)備中的子串相關(guān)的信息。4.如權(quán)利要求1所述的方法,其中,以第一圖樣字開始的圖樣串的第一圖樣字和圖樣長度的組合是不重復(fù)的。5.如權(quán)利要求1所述的方法,其中,所述第一存儲設(shè)備包括至少一個Hashkt,并且其中所述第二存儲設(shè)備包括至少一個HashMap。6.一種用于通過使用一個或多個處理器執(zhí)行駐留在計算機中的指令來從文本中搜索多個串的系統(tǒng),該系統(tǒng)包括第一存儲設(shè)備,用于存儲分別以第一圖樣字開始的圖樣串;第二存儲設(shè)備,用于存儲以第一圖樣字開始的圖樣串的第一圖樣字和相應(yīng)的圖樣長度的組合;搜索引擎,用于在文本中迭代地識別與所述第一圖樣字之一相匹配的字以設(shè)置為當(dāng)前字,其中所述搜索引擎迭代地提取以所述當(dāng)前字開始并具有與圖樣長度之一相等的子串長度的子串,并且其中所述搜索引擎迭代地將所述子串與具有與該子串的第一圖樣字和長度相同的第一圖樣字和串長度的每個圖樣串相比較;以及第三存儲設(shè)備,用于在該子串與圖樣串之一相匹配的情況下存儲與該子串相關(guān)的信息。7.如權(quán)利要求6所述的系統(tǒng),還包括用于界面,用于接收所述圖樣串。8.如權(quán)利要求6所述的系統(tǒng),還包括顯示器,用于顯示與存儲在第三存儲設(shè)備中的子串相關(guān)的信息。9.如權(quán)利要求6所述的系統(tǒng),其中與存儲在第三存儲設(shè)備中的子串相關(guān)的信息包括所述子串在文本中的位置。10.如權(quán)利要求6所述的系統(tǒng),其中如果所述子串與圖樣串之一相匹配,所述搜索引擎則加亮該子串。全文摘要本發(fā)明涉及用于搜索多個串的方法和系統(tǒng)。該系統(tǒng)可以包括第一存儲設(shè)備,用于存儲分別以第一圖樣字開始的圖樣串;以及第二存儲設(shè)備,用于存儲以第一圖樣字開始的圖樣串的第一圖樣字和相應(yīng)的圖樣長度的組合。該系統(tǒng)還可以包括搜索引擎,用于在文本中迭代地識別與所述第一圖樣字之一相匹配的字以設(shè)置為當(dāng)前字,其中所述搜索引擎迭代地提取以所述當(dāng)前字開始并具有與圖樣長度之一相等的子串長度的子串,并且其中所述搜索引擎迭代地將所述子串與具有與該子串的第一圖樣字和長度相等的第一圖樣字和串長度的每個圖樣串相比較。該系統(tǒng)還可以包括第三存儲設(shè)備,用于存儲與圖樣串之一相匹配的任意子串。文檔編號G06F17/30GK102169485SQ201010116709公開日2011年8月31日申請日期2010年2月26日優(yōu)先權(quán)日2010年2月26日發(fā)明者張林申請人:電子灣有限公司