搜索方法和搜索引擎的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息檢索技術(shù),尤其涉及一種搜索方法和搜索引擎。
【背景技術(shù)】
[0002]搜索引擎是一種根據(jù)用戶終端輸入的關(guān)鍵字,利用倒排索引文件,也稱索引文件,進(jìn)行檢索的系統(tǒng)。搜索引擎可分為全文搜索引擎、垂直搜索引擎、集合式搜索引擎和門戶搜索引擎等不同種類。搜索引擎需要預(yù)先根據(jù)包括數(shù)十億,甚至百億數(shù)量級(jí)網(wǎng)頁的原始網(wǎng)絡(luò)數(shù)據(jù)創(chuàng)建索引文件,獲得的索引文件的數(shù)據(jù)量也較大,以全文搜索引擎為例,約為12G到13G數(shù)量級(jí)。
[0003]現(xiàn)有技術(shù)中,通常采用將索引文件存儲(chǔ)在磁盤上,當(dāng)利用文件進(jìn)行搜索時(shí),需要頻繁占用磁盤的輸入/輸出(I/O)接口,因而導(dǎo)致檢索速度下降,效率較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種搜索方法和搜索引擎,用于提高檢索速度和效率。
[0005]本發(fā)明的第一個(gè)方面是提供一種搜索方法,包括:
[0006]接收用戶終端發(fā)送的用于對(duì)網(wǎng)頁進(jìn)行搜索的關(guān)鍵字;
[0007]利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第一匹配網(wǎng)頁;
[0008]若所述第一匹配網(wǎng)頁的個(gè)數(shù)少于第一閾值,利用所述各節(jié)點(diǎn)的磁盤中所存儲(chǔ)的第二索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第二匹配網(wǎng)頁;所述第二索引文件是以第一時(shí)長為周期對(duì)所述各從節(jié)點(diǎn)的內(nèi)存中所存儲(chǔ)的所述第一索引文件周期性持久化到磁盤中獲得的;
[0009]向所述用戶終端發(fā)送搜索結(jié)果;所述搜索結(jié)果包括所述第一匹配網(wǎng)頁和/或所述第二匹配網(wǎng)頁。
[0010]本發(fā)明的另一個(gè)方面是提供一種搜索引擎,包括:
[0011]接收模塊,用于接收用戶終端發(fā)送的用于對(duì)網(wǎng)頁進(jìn)行搜索的關(guān)鍵字;
[0012]第一搜索模塊,用于利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第一匹配網(wǎng)頁;
[0013]第二搜索模塊,用于若所述第一匹配網(wǎng)頁的個(gè)數(shù)少于第一閾值,利用所述各節(jié)點(diǎn)的磁盤中所存儲(chǔ)的第二索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第二匹配網(wǎng)頁;所述第二索引文件是以第一時(shí)長為周期對(duì)所述各從節(jié)點(diǎn)的內(nèi)存中所存儲(chǔ)的所述第一索引文件,周期性持久化到磁盤中獲得的;
[0014]發(fā)送模塊,用于向所述用戶終端發(fā)送搜索結(jié)果;所述搜索結(jié)果包括所述第一匹配網(wǎng)頁和/或所述第二匹配網(wǎng)頁。
[0015]本發(fā)明提供的搜索方法和搜索引擎,通過接收用戶終端發(fā)送的用于對(duì)網(wǎng)頁進(jìn)行搜索的關(guān)鍵字,利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,獲得與關(guān)鍵字相匹配的第一匹配網(wǎng)頁后,若第一匹配網(wǎng)頁的個(gè)數(shù)少于第一閾值,再利用各節(jié)點(diǎn)的磁盤中所存儲(chǔ)的第二索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第二匹配網(wǎng)頁,向用戶終端發(fā)送包含第一匹配網(wǎng)頁和第二匹配網(wǎng)頁的搜索結(jié)果,由于首先利用內(nèi)存中存儲(chǔ)的第一索引文件進(jìn)行搜索,不需要占用I/o接口,從而避免了由于全部將索引文件存儲(chǔ)在磁盤所導(dǎo)致的檢索速度下降,提高了檢索效率。
【附圖說明】
[0016]圖1為本發(fā)明一實(shí)施例提供的搜索方法的流程示意圖;
[0017]圖2為本發(fā)明另一實(shí)施例提供的搜索方法的流程示意圖;
[0018]圖3為本發(fā)明一實(shí)施例提供的搜索引擎的結(jié)構(gòu)示意圖;
[0019]圖4為本發(fā)明另一實(shí)施例提供的搜索引擎的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0020]圖1為本發(fā)明一實(shí)施例提供的搜索方法的流程示意圖,本實(shí)施例所提供的搜索方法可由搜索引擎執(zhí)行,如圖1所示,該搜索方法包括:
[0021]101、接收用戶終端發(fā)送的用于對(duì)網(wǎng)頁進(jìn)行搜索的關(guān)鍵字。
[0022]102、利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,獲得與關(guān)鍵字相匹配的第一匹配網(wǎng)頁。
[0023]其中,第一索引文件是各從節(jié)點(diǎn)根據(jù)原始網(wǎng)絡(luò)數(shù)據(jù)創(chuàng)建的,原始網(wǎng)絡(luò)數(shù)據(jù)是主節(jié)點(diǎn)以負(fù)載均衡為依據(jù),根據(jù)各從節(jié)點(diǎn)的負(fù)載,向各從節(jié)點(diǎn)發(fā)送的。
[0024]搜索引擎包括上載系統(tǒng)和索引系統(tǒng),其中索引系統(tǒng)包括主節(jié)點(diǎn)和各從節(jié)點(diǎn)。主節(jié)點(diǎn)以負(fù)載均衡為依據(jù),根據(jù)各從節(jié)點(diǎn)的負(fù)載,向各從節(jié)點(diǎn)發(fā)送原始網(wǎng)絡(luò)數(shù)據(jù),以使各從節(jié)點(diǎn)根據(jù)原始網(wǎng)絡(luò)數(shù)據(jù)創(chuàng)建索引文件。各從節(jié)點(diǎn)之間相互不進(jìn)行通信,由主節(jié)點(diǎn)對(duì)各從節(jié)點(diǎn)進(jìn)行統(tǒng)一管理,使得對(duì)從節(jié)點(diǎn)的刪減更加靈活。經(jīng)過測試,若原始網(wǎng)絡(luò)數(shù)據(jù)的平均大小為1K,在單節(jié)點(diǎn)雙核CPU、24G內(nèi)存的配置的情況下,則該搜索引擎的平均索引速度達(dá)到2500條/秒,10個(gè)從節(jié)點(diǎn)的情況下,則該搜索引擎的平均索引速度達(dá)到20000條/秒。
[0025]從節(jié)點(diǎn)可采用多線程的工作模式根據(jù)原始網(wǎng)絡(luò)數(shù)據(jù)創(chuàng)建索引文件。從節(jié)點(diǎn)接收主節(jié)點(diǎn)發(fā)送的原始網(wǎng)絡(luò)數(shù)據(jù),對(duì)原始網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解碼,將解碼后的原始網(wǎng)絡(luò)數(shù)據(jù)加入到原始數(shù)據(jù)隊(duì)列中,利用多個(gè)索引創(chuàng)建線程,對(duì)原始數(shù)據(jù)隊(duì)列中的原始網(wǎng)絡(luò)數(shù)據(jù)并行進(jìn)行處理,獲得索引文件,將該索引文件存儲(chǔ)到內(nèi)存中,并對(duì)內(nèi)存索引進(jìn)行更新。其中,內(nèi)存索引用于指示索引文件的存儲(chǔ)位置。
[0026]103、若第一匹配網(wǎng)頁的個(gè)數(shù)少于第一閾值,利用各節(jié)點(diǎn)的磁盤中所存儲(chǔ)的第二索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第二匹配網(wǎng)頁。
[0027]其中,第二索引文件是以第一時(shí)長為周期對(duì)所述各從節(jié)點(diǎn)的內(nèi)存中所存儲(chǔ)的所述第一索引文件,周期性持久化到磁盤中獲得的。
[0028]104、向用戶終端發(fā)送搜索結(jié)果。
[0029]其中,搜索結(jié)果包括第一匹配網(wǎng)頁和/或第二匹配網(wǎng)頁。
[0030]本實(shí)施例中的搜索弓I擎可用于對(duì)輿情數(shù)據(jù)的處理中。
[0031]本實(shí)施例中,通過接收用戶終端發(fā)送的用于對(duì)網(wǎng)頁進(jìn)行搜索的關(guān)鍵字,利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,獲得與關(guān)鍵字相匹配的第一匹配網(wǎng)頁后,若第一匹配網(wǎng)頁的個(gè)數(shù)少于第一閾值,再利用各節(jié)點(diǎn)的磁盤中所存儲(chǔ)的第二索引文件,進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第二匹配網(wǎng)頁,向用戶終端發(fā)送包含第一匹配網(wǎng)頁和第二匹配網(wǎng)頁的搜索結(jié)果,由于首先利用內(nèi)存中存儲(chǔ)的第一索引文件進(jìn)行搜索,不需要占用I/o接口,從而避免了由于將索引文件存儲(chǔ)在磁盤所導(dǎo)致的檢索速度下降,提高了檢索效率。
[0032]圖2為本發(fā)明另一實(shí)施例提供的搜索方法的流程示意圖,如圖2所示,該搜索方法包括:
[0033]201、搜索引擎接收用戶終端發(fā)送的用于對(duì)網(wǎng)頁進(jìn)行搜索的關(guān)鍵字。
[0034]202、搜索引擎利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,獲得與關(guān)鍵字相匹配的第一匹配網(wǎng)頁。
[0035]其中,第一索引文件是各從節(jié)點(diǎn)根據(jù)原始網(wǎng)絡(luò)數(shù)據(jù)創(chuàng)建的,原始網(wǎng)絡(luò)數(shù)據(jù)是主節(jié)點(diǎn)以負(fù)載均衡為依據(jù),根據(jù)各從節(jié)點(diǎn)的負(fù)載,向各從節(jié)點(diǎn)發(fā)送的。
[0036]主節(jié)點(diǎn)通過各從節(jié)點(diǎn)發(fā)送的心跳包,獲取各從節(jié)點(diǎn)的負(fù)載,心跳包記錄各從節(jié)點(diǎn)的索引量和活動(dòng)狀態(tài),活動(dòng)狀態(tài)為正在工作或未工作。搜索引擎包括上載系統(tǒng)和索引系統(tǒng),上載系統(tǒng)向索引系統(tǒng)中的主節(jié)點(diǎn)發(fā)送原始網(wǎng)絡(luò)數(shù)據(jù),上載系統(tǒng)僅與索引系統(tǒng)中的主節(jié)點(diǎn)相聯(lián)系,僅能獲知主節(jié)點(diǎn)的網(wǎng)絡(luò)地址。索引系統(tǒng)中的主節(jié)點(diǎn)根據(jù)心跳包,從各從節(jié)點(diǎn)中選擇活動(dòng)狀態(tài)為正在工作,并且索引量最小的從節(jié)點(diǎn)作為目標(biāo)從節(jié)點(diǎn),向上載系統(tǒng)發(fā)送目標(biāo)從節(jié)點(diǎn)的網(wǎng)絡(luò)地址,以使上載系統(tǒng)根據(jù)該網(wǎng)絡(luò)地址向目標(biāo)從節(jié)點(diǎn)發(fā)送原始網(wǎng)絡(luò)數(shù)據(jù)。目標(biāo)從節(jié)點(diǎn)接收到原始網(wǎng)絡(luò)數(shù)據(jù)之后,在該目標(biāo)從節(jié)點(diǎn)的內(nèi)存中創(chuàng)建索引文件,直接以增量方式更新內(nèi)存的索引庫后,該索引文件即可用于檢索。
[0037]203、若第一匹配網(wǎng)頁的個(gè)數(shù)少于第一閾值,搜索引擎利用各節(jié)點(diǎn)的磁盤中的往期索引庫中存儲(chǔ)的第二索引文件進(jìn)行搜索。
[0038]其中,往期索引庫用于存儲(chǔ)持久化到磁盤的時(shí)間不大于第二時(shí)長的第二索引文件。第二索引文件是以第一時(shí)長為周期對(duì)所述各從節(jié)點(diǎn)的內(nèi)存中所存儲(chǔ)的所述第一索引文件,周期性持久化到磁盤中獲得的。
[0039]優(yōu)先利用各從節(jié)點(diǎn)的內(nèi)存中存儲(chǔ)的第一索引文件,進(jìn)行搜索,但由于內(nèi)存具有易失性,為了提高索引文件的安全性,需要周期性的將內(nèi)存中的第一索引文件存儲(chǔ)到磁盤中,即持久化到磁盤,由于持久化到磁盤的操作需要對(duì)磁盤進(jìn)行寫操作,占用I/o接口,影響搜索引擎的搜索效率,因而持久化到磁盤的操作周期不需要太高,優(yōu)選第一時(shí)長為I個(gè)小時(shí)。對(duì)持久化到磁盤后的第一索引文件進(jìn)行標(biāo)記,在每個(gè)該第一時(shí)長內(nèi),只需根據(jù)該標(biāo)記,將最新創(chuàng)建的未持久化到磁盤的索引文件進(jìn)行操作。
[0040]204、若利用所述各節(jié)點(diǎn)的磁盤中的往期索引庫進(jìn)行搜索所獲得的匹配網(wǎng)頁的個(gè)數(shù)少于第二閾值,搜索引擎利用所述各節(jié)點(diǎn)的磁盤中的歷史索引庫進(jìn)行搜索,獲得與所述關(guān)鍵字相匹配的第二匹配網(wǎng)頁。
[0041]其中,歷史索引庫用于存儲(chǔ)持久化到磁盤的時(shí)間大于所述第二時(shí)長的第二索引文件。
[0042]205、搜索引擎向用戶終端發(fā)送搜索結(jié)果。
[0043]其中,搜索結(jié)果包括第一匹配網(wǎng)頁和第二匹配網(wǎng)頁。
[0044]進(jìn)一步,本實(shí)施例中的搜索引擎還用于實(shí)時(shí)監(jiān)控各從節(jié)點(diǎn)的內(nèi)存的占用率,若各從節(jié)點(diǎn)中存在所述內(nèi)存的占用率超過第三閾值的從節(jié)點(diǎn),根據(jù)所述第一索引文件的創(chuàng)建時(shí)間,依次對(duì)所述內(nèi)存的占用率超過第三閾值的從節(jié)點(diǎn)的內(nèi)存中所存儲(chǔ)的已持久化到磁盤的第一索引文件進(jìn)行刪除。
[0045]具體的,搜索引擎可預(yù)先設(shè)定第三閾值,以及所刪除的已持久化到磁盤的第一索引文件的數(shù)據(jù)量,即每次刪除所釋放的存儲(chǔ)空間大小。當(dāng)從節(jié)點(diǎn)內(nèi)存的占用率超過第三閾值時(shí),從內(nèi)存中選擇已持久化到磁盤的第一索引文件,按照第一索引文件的創(chuàng)建時(shí)間,依次進(jìn)行刪除,直至所刪除的第一索引文件達(dá)到預(yù)先設(shè)定的所釋放的存儲(chǔ)空間大小。以及將所刪除的第一索引文件記錄到已卸載隊(duì)列中。其中,在計(jì)算內(nèi)存的占用率時(shí),不能夠使用節(jié)點(diǎn)的操作系統(tǒng)所提供的內(nèi)存信息,而是按照當(dāng)前內(nèi)存中加載的所有第一索引文件統(tǒng)計(jì)索引庫的大小。這是由于搜索引擎在進(jìn)行搜索時(shí),索引文件是不能夠被刪除的,操作系統(tǒng)的刪除操作僅是減少了索引文件的引用計(jì)數(shù),而并沒有真正的釋放內(nèi)存空間,是有當(dāng)所有的搜索操作結(jié)束后,該索引文件所占用的內(nèi)存才能夠真正釋放。搜索引擎還可在將所刪除的第一索引文件記錄到已卸載隊(duì)列中之后,將持久化目錄中記錄的已卸載隊(duì)列中的第一索引文件移動(dòng)至磁盤主索引庫目錄,對(duì)磁盤主索引庫目錄進(jìn)行更新,以重新劃分磁盤中的往期索引庫和歷史索引庫。
[0046]本實(shí)施例中,通過接收用戶終端發(fā)送的用于對(duì)