亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種實(shí)時(shí)搜索的方法

文檔序號:6372245閱讀:139來源:國知局
專利名稱:一種實(shí)時(shí)搜索的方法
技術(shù)領(lǐng)域
本發(fā)明涉及搜索技術(shù),尤其涉及一種實(shí)時(shí)搜索的方法。
背景技術(shù)
互聯(lián)網(wǎng)的飛速發(fā)展,給搜索引擎提出了新的難題,由于網(wǎng)絡(luò)信息的爆炸性增長,大規(guī)模的web搜索引擎平均每秒需要處理上萬次搜索請求,每個搜索的處理需要涉及到海量的索引,因此,索引處理已經(jīng)成為搜索引擎的主要的性能瓶頸?,F(xiàn)有的搜索方案中,對于實(shí)時(shí)搜索,雖然可以一邊提供查詢的功能,一邊提供修改的數(shù)據(jù)排序字段,例如一張員工數(shù)據(jù)表中,存儲了員工的編號、姓名、工作日期共三個字段的信息,而索引是按照“編號”的排序字段進(jìn)行建立的,則用戶需要查詢以“工作日期”為排序字段的前十名員工的信息,則可以一邊返回查詢的數(shù)據(jù)給用戶,一邊修改數(shù)據(jù)的排序字段,以便于下次較快地返回以“工作日期”為排序字段的所有員工的信息,但是,由于沒有適用緩存,針對每一次新的搜索請求,都需要從索引中檢索數(shù)據(jù),并對索引中的數(shù)據(jù)進(jìn)行重新排序,由此,延長了數(shù)據(jù)搜索的時(shí)間,降低了搜索系統(tǒng)的性能。

發(fā)明內(nèi)容
根據(jù)對大量用戶的搜索習(xí)慣和規(guī)律進(jìn)行調(diào)查發(fā)現(xiàn),在一段時(shí)間內(nèi)大量用戶會對一些當(dāng)前熱門關(guān)鍵詞進(jìn)行搜索,而搜索過程中生成的索引和搜索結(jié)果在預(yù)定時(shí)間內(nèi)是保持不變。如果能夠充分利用先前已經(jīng)形成的索引和搜索結(jié)果可以減少為相同的搜索請求重復(fù)生成搜索結(jié)果的服務(wù)器時(shí)間和負(fù)荷。為此本發(fā)明的目的是提供一種實(shí)時(shí)搜索的方法,該方法包括以下步驟將數(shù)據(jù)文檔按照時(shí)間順序生成多段索引;從各索引段中提取部分?jǐn)?shù)據(jù),予以緩存,其中,根據(jù)各段的生成時(shí)間確定提取該段進(jìn)行緩存的數(shù)據(jù)量;搜索數(shù)據(jù)時(shí),先從緩存中搜索各索弓I段的文檔,緩存中存在目標(biāo)數(shù)據(jù)時(shí),則返回目標(biāo)數(shù)據(jù);否則,從其他存儲單元中搜索數(shù)據(jù);將從緩存所搜索的目標(biāo)數(shù)據(jù)和/或從存儲單元中所搜索的目標(biāo)數(shù)據(jù)予以合并,返回合并的數(shù)據(jù)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)I)通過采用緩存的方案,提高了實(shí)時(shí)搜索的效率;2)針對不同時(shí)間段的數(shù)據(jù),采用不同的緩存方案,提高了實(shí)時(shí)搜索的靈活性。


通過閱讀參照以下附圖所作的對非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會變得更明顯圖I為根據(jù)本發(fā)明一個優(yōu)選實(shí)施例的實(shí)時(shí)搜索方法的流程圖2為根據(jù)本發(fā)明的一個優(yōu)選實(shí)施例的數(shù)據(jù)搜索的方法流程具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)描述。根據(jù)本發(fā)明,提供了一種實(shí)時(shí)搜索的方法。下文中,將對本發(fā)明提供的實(shí)時(shí)搜索的方法進(jìn)行詳細(xì)說明。該方法包括以下步驟步驟S101,將數(shù)據(jù)文檔按照時(shí)間順序生成多段索引。具體地,索引的建立和數(shù)據(jù)搜索的方法可以參照現(xiàn)有技術(shù),例如包括以下步驟a)在內(nèi)存中預(yù)設(shè)存儲單元的大小和個數(shù),初始化相應(yīng)的內(nèi)存空間,記錄包括數(shù)據(jù) 類型和數(shù)據(jù)內(nèi)容在內(nèi)的數(shù)據(jù)信息,如文本數(shù)據(jù)及內(nèi)容;b)初始化索引,在所述索引中存儲對應(yīng)數(shù)據(jù)信息的各存儲單元的地址信息;c)收到搜索請求,通過索引進(jìn)行數(shù)據(jù)搜索;d)判斷是否搜索得到所需數(shù)據(jù),是,則將搜索結(jié)果返回;否,則從本地或遠(yuǎn)程磁盤中搜索并讀取所需數(shù)據(jù)。本技術(shù)方案中,根據(jù)時(shí)間順序建立多段索引,如建立三段索引,第一段索引中所包含的數(shù)據(jù)包括一天以內(nèi)被搜索或更新的數(shù)據(jù);第二段索引中所映射的數(shù)據(jù)包括一天之前三個月以內(nèi)被搜索或更新的數(shù)據(jù);第三段索引中所映射的數(shù)據(jù)包括前三個月之前被搜索或更新的數(shù)據(jù),也就是不同段的索引,所包含的是不同時(shí)間段的數(shù)據(jù)。所述索引段中包括搜索請求和相應(yīng)的搜索結(jié)果。當(dāng)然,本領(lǐng)域的技術(shù)人員應(yīng)該知曉,索引中由于可以只包含數(shù)據(jù)中的關(guān)鍵字值和記錄號,如索引中包含一張員工表中的“工號”值和排序號,因此,索引比數(shù)據(jù)本身的內(nèi)容要小得多,并且,建立索引后,索引中的內(nèi)容會隨著數(shù)據(jù)的增減或修改而更新。一個完整的索引由多個段組成,每個段是一份可搜索的最小單元,它由多個文檔生成,每個文檔在段中具有唯一的標(biāo)識,各個文檔可以分別為不同的數(shù)據(jù)對象類型,包括文本數(shù)據(jù)對象、圖像數(shù)據(jù)對象、音頻數(shù)據(jù)對象、視頻數(shù)據(jù)對象、可執(zhí)行程序數(shù)據(jù)對象等等,并且,每個文檔包含一個全局的、唯一的鍵值,即主鍵,例如文檔的標(biāo)識號。在每個索引段中,文檔按照主鍵進(jìn)行排序。步驟S102,從各索引段中提取部分?jǐn)?shù)據(jù),予以緩存,其中,各段所提取的數(shù)據(jù)量根據(jù)段的生成時(shí)間予以確定。具體地,對于不同的索引段,從中提取不同量的數(shù)據(jù)用于緩存。對于較新的段,其緩存的數(shù)據(jù)量可以多一些,對于時(shí)間較早的段,其緩存的數(shù)據(jù)量可以少一些。為了區(qū)分不同段的時(shí)間先后,可以對每個段打上其生成的時(shí)間戳。所謂時(shí)間戳,指的是數(shù)據(jù)經(jīng)過每一個路由器時(shí)的當(dāng)?shù)貢r(shí)間。在本發(fā)明中,時(shí)間戳可以指每個索引段的生成時(shí)間。通常,每個索引段的緩存數(shù)據(jù)在一段時(shí)間內(nèi)需要合并,本實(shí)施例中,優(yōu)選地,每個索引段一天內(nèi)合并一次所緩存的數(shù)據(jù),也就是每個索引段的緩存失效時(shí)間是一天,例如,索引結(jié)構(gòu)中原有三個索引段,第一個索引段包含的是一天以內(nèi)的數(shù)據(jù),第二個索引段包含的是一天之前三個月以內(nèi)的數(shù)據(jù),第三個索引段包含的是三個月之前的數(shù)據(jù),則在每天晚上的十二點(diǎn)對各個索引段的數(shù)據(jù)進(jìn)行合并,對于第二天而言,新產(chǎn)生的數(shù)據(jù)則建立新的索引段予以緩存,當(dāng)新的索引段中數(shù)據(jù)累計(jì)到一定數(shù)量時(shí),不再加入新的數(shù)據(jù),由此,按時(shí)間戳的順序,可以對各索引段進(jìn)行排序。而對于各索引段中所要緩存的數(shù)據(jù),即每個索引段所確定的緩存空間,則根據(jù)段的生成時(shí)間予以確定。例如,對于一天以內(nèi)生成或更新的數(shù)據(jù),由于此類數(shù)據(jù)較新,被用戶搜索的可能性很大,因此,盡可能多地將這些數(shù)據(jù)予以緩存,以提高實(shí)時(shí)搜索的效率。而對于三個月以前生成或更新過的數(shù)據(jù),由于此類數(shù)據(jù)的時(shí)間較為久遠(yuǎn),被用戶搜索的可能性很小,因此,可以只提取小部分的數(shù)據(jù)予以緩存,就能滿足用戶實(shí)時(shí)搜索的需求。再例如,原有兩段索引,第一段索引存儲的是一天以內(nèi)的數(shù)據(jù)(包括本數(shù)),第二段索引存儲的是一天之前的數(shù)據(jù),那么,對于第一段索引,由于該段中生成的數(shù)據(jù)相對較新,被搜索的可能性較大,并且,該段中數(shù)據(jù)文檔的排序由于搜索的不確定性可能波動較大,那么,對于這樣的段,該段中緩存的數(shù)據(jù)文檔相對要多一些,否則,如果緩存過小,有些數(shù)據(jù)文檔之前由于排序字段的原因被排在后面而不能緩存,但是由于是新數(shù)據(jù),排序字段波動較大,當(dāng)新數(shù)據(jù)突然置于搜索的熱門位置時(shí),由于沒有緩存,只能從其他存儲單元中進(jìn)行搜索,使得實(shí)時(shí)搜索的效率大大降低。因此,為了提高熱門數(shù)據(jù)的實(shí)時(shí)搜索效率,不因數(shù)據(jù)的 排序字段一時(shí)排后而突然超前時(shí),數(shù)據(jù)沒有能夠緩存而影響數(shù)據(jù)搜索的效率,需要根據(jù)不同索引段的生成時(shí)間,設(shè)定不同的緩存空間,甚至,對于最新的索引段,將用戶所需要搜索的與該索引段相關(guān)的所有數(shù)據(jù)予以緩存,提高實(shí)時(shí)搜索的效率。在緩存的索引段中包括部分重復(fù)搜索請求的搜索結(jié)果。具體來說,將預(yù)定時(shí)間內(nèi)超過預(yù)定次數(shù)的搜索請求的搜索結(jié)果進(jìn)行緩存,當(dāng)再次接收到相同搜索請求時(shí)直接調(diào)出已緩存的搜索結(jié)果。例如統(tǒng)計(jì)過去3天內(nèi)被重復(fù)超過10000次的搜索請求。假設(shè),搜索“出租房屋”在過去3天被請求12000次。則將該搜索請求的搜索結(jié)果包含在索引段中進(jìn)行緩存。當(dāng)再次請求該搜索時(shí),直接從緩存中調(diào)出緩存的搜索結(jié)果。該緩存的搜索結(jié)果可以實(shí)時(shí)更新。當(dāng)然,由于時(shí)間較新的索引段,其內(nèi)容更新的速度較快,為了滿足用戶的數(shù)據(jù)搜索需求,也需要將該段中較多的數(shù)據(jù)予以緩存。例如,用戶需要搜索50篇文檔,如果緩存中有50篇文檔,而由于文檔更新速度快,其中I篇已被刪除或者其中的信息已過期,因此,只能從緩存中返回49篇有效的文檔給用戶,這就降低了實(shí)時(shí)搜索的效率;如果緩存的文檔數(shù)為52篇,那么,就可以較快地從緩存中返回50篇有效的文檔給用戶。對于時(shí)間較為久遠(yuǎn)的段,由于其更新的速度較慢,可以在緩存中存入的文檔數(shù)相對少一些,如此,也可以節(jié)省緩存空間。步驟S 103,搜索數(shù)據(jù)時(shí),先從緩存中搜索各索引段的文檔,緩存中存在目標(biāo)數(shù)據(jù)時(shí),則返回目標(biāo)數(shù)據(jù);否則,從其他存儲單元中搜索數(shù)據(jù)。具體地,由上文可知,一個完整的索引由多個段組成,每個段是一份可搜索的最小單元,它由多個文檔生成。由于從緩存中返回?cái)?shù)據(jù)比從其他存儲單元中返回?cái)?shù)據(jù)的速度更快,因此,參照圖2,圖2為根據(jù)本發(fā)明的一個優(yōu)選實(shí)施例的搜索數(shù)據(jù)的方法流程圖,根據(jù)圖2,搜索數(shù)據(jù)的具體過程包括步驟S201,搜索數(shù)據(jù)時(shí),先從緩存中搜索各索引段的文檔。步驟S202,判斷緩存中是否存在所要搜索的數(shù)據(jù),如果不存在,進(jìn)入步驟S203 ;如果存在,進(jìn)入步驟S204。步驟S203,如果緩存中不存在目標(biāo)數(shù)據(jù),則從其他存儲單元中搜索數(shù)據(jù),并將搜索的目標(biāo)數(shù)據(jù)所對應(yīng)的文檔,按照上文中所設(shè)定的主鍵予以排序,置入緩存。例如,用戶從搜索引擎中輸入關(guān)鍵詞,第一頁搜索結(jié)果中得到50個數(shù)據(jù)文檔,這50個數(shù)據(jù)文檔都沒有緩存,那么可以將這50個數(shù)據(jù)文檔按照文檔號予以排序,并將排好序的數(shù)據(jù)文檔從其他存儲單元置入緩存,以便于下次從搜索引擎中輸入相同關(guān)鍵詞時(shí),直接從緩存中返回?cái)?shù)據(jù),提高實(shí)時(shí)搜索的效率。步驟S204,如果緩存中存在目標(biāo)數(shù)據(jù)(即所要搜索的數(shù)據(jù)),則進(jìn)一步判斷,目標(biāo)數(shù)據(jù)對應(yīng)的文檔的排序字段是否被更改,如果沒有被更改,則進(jìn)入步驟S205,否則,進(jìn)入步驟S206。步驟S205,直接取得緩存的目標(biāo)數(shù)據(jù),返回。步驟S206,如果目標(biāo)數(shù)據(jù)對應(yīng)的文檔的排序字段被更改,如文檔的標(biāo)識號被更改,則對該文檔按照排序字段重新排列到合適位置,并將其重新寫回緩存,并將重新排列的文檔中的數(shù)據(jù)返回。 步驟S104,將從相應(yīng)索引段中所搜索的目標(biāo)數(shù)據(jù),和/或存儲單元中所搜索的目標(biāo)數(shù)據(jù)予以合并,返回合并的數(shù)據(jù)。具體地,一個完整的搜索結(jié)果由多個段的結(jié)果合并而成,取得各個段的搜索結(jié)果后,作合并,返回到客戶端。通常,收到索引的搜索請求后,解析該搜索請求并判斷所要搜索的目標(biāo)段,并串行搜索各個目標(biāo)段,最后,將搜索的結(jié)果排好序后,發(fā)送到客戶端。例如,索引分為兩段予以緩存,一段中生成的是一天以內(nèi)的數(shù)據(jù),另一段中生成的是一天之前的數(shù)據(jù),而用戶需要搜索50篇有關(guān)租房的文檔信息,那么,從第一段所緩存的數(shù)據(jù)中返回50篇文檔,同樣,從第二段所緩存的數(shù)據(jù)中也可以返回50篇文檔,共返回100篇文檔。當(dāng)從這100篇文檔中返回用戶所需的50篇有關(guān)租房的文檔信息時(shí),可以根據(jù)這些文檔與用戶需求的相關(guān)度,如按照用戶租房的要求對這些文檔進(jìn)行打分,然后根據(jù)分?jǐn)?shù)的高低予以排序,將前50篇文檔返回給用戶。如上文,部分?jǐn)?shù)據(jù)在緩存中沒有存儲時(shí),則從這些非緩存的存儲單元中搜索到目標(biāo)數(shù)據(jù)時(shí),將緩存中所搜索的目標(biāo)數(shù)據(jù)和這些非緩存的目標(biāo)數(shù)據(jù)一起合并,然后返回給用戶。同樣地,所要搜索的數(shù)據(jù)在緩存中都沒有存儲時(shí),則從其他存儲單元中搜索數(shù)據(jù),并將所搜索的目標(biāo)數(shù)據(jù)予以合并,返回給用戶。上文中,每個索引段的緩存空間根據(jù)索引段的生成時(shí)間可以不同,但是,每個索引段進(jìn)行更新時(shí),可以有相同的更新方法,例如,更新時(shí),判斷每個索引段的緩存空間是否寫滿,若寫滿,則覆蓋部分已寫入的數(shù)據(jù);若未寫滿,則寫入所更新的數(shù)據(jù)。當(dāng)然,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明的索引結(jié)構(gòu)的建立可以采用其他通用的方法,只要最終將索引按照時(shí)間予以分段,都屬于本方案的內(nèi)容,為了簡明起見,在此不再贅述。本發(fā)明所提供的實(shí)時(shí)搜索的方法具有以下優(yōu)點(diǎn)I)通過采用緩存的方案,提高了實(shí)時(shí)搜索的效率;2)針對不同時(shí)間段的數(shù)據(jù),采用不同的緩存方案,提高了實(shí)時(shí)搜索的靈活性。以上所揭露的僅為本發(fā)明的一種較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種實(shí)時(shí)搜索的方法,該方法包括以下步驟 將數(shù)據(jù)文檔按照時(shí)間順序生成多段索引; 從各索引段中提取部分?jǐn)?shù)據(jù),予以緩存,其中,根據(jù)各段的生成時(shí)間確定提取該段進(jìn)行緩存的數(shù)據(jù)量; 搜索數(shù)據(jù)時(shí),先從緩存中搜索各索引段的文檔,緩存中存在目標(biāo)數(shù)據(jù)時(shí),則返回目標(biāo)數(shù)據(jù);否則,從其他存儲單元中搜索數(shù)據(jù); 將從緩存所搜索的目標(biāo)數(shù)據(jù)和/或從存儲單元中所搜索的目標(biāo)數(shù)據(jù)予以合并,返回合 并的數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述的按照時(shí)間順序?qū)?shù)據(jù)文檔生成多段索引的步驟還包括對各個索引段打上其生成時(shí)間的時(shí)間標(biāo)記。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述根據(jù)各段的生成時(shí)間確定提取該段進(jìn)行緩存的數(shù)據(jù)量的步驟還包括從新生成的段中所提取的用于緩存的數(shù)據(jù)量比之前生成的段所用于緩存的數(shù)據(jù)量大。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述根據(jù)各段的生成時(shí)間確定提取該段進(jìn)行緩存的數(shù)據(jù)量的步驟還包括對于最新的索引段,將用戶所需要搜索的與該索引段相關(guān)的所有數(shù)據(jù)予以緩存。
5.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述返回合并的數(shù)據(jù)的步驟還包括 緩存中存在所要搜索的數(shù)據(jù),則返回目標(biāo)數(shù)據(jù); 緩存中不存在所要搜索的數(shù)據(jù),則從其他存儲單元中搜索數(shù)據(jù),并將搜索的目標(biāo)數(shù)據(jù)所對應(yīng)的文檔,按照標(biāo)識予以排序并置入緩存。
6.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述緩存中存在所要搜索的數(shù)據(jù)則返回目標(biāo)數(shù)據(jù)的步驟還包括以下步驟 目標(biāo)數(shù)據(jù)對應(yīng)的文檔的排序字段被更改,則對該文檔按照排序字段重新排列到合適位置,并將其重新寫回緩存,并將重新排列的文檔中的數(shù)據(jù)返回; 否則,直接取得緩存的目標(biāo)數(shù)據(jù)。
7.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的方法,其特征在于,所述索引由多個段組成,每個段由多個文檔生成,其中,每個文檔在段中具有唯一的標(biāo)識。
8.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述被緩存的索引段中包括搜索請求和相應(yīng)的搜索結(jié)果。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,將預(yù)定時(shí)間內(nèi)超過預(yù)定次數(shù)的搜索請求的搜索結(jié)果進(jìn)行緩存,當(dāng)再次接收到相同搜索請求時(shí)直接調(diào)出已緩存的搜索結(jié)果。
全文摘要
本發(fā)明提供了一種實(shí)時(shí)搜索的方法,該方法包括以下步驟將數(shù)據(jù)文檔按照時(shí)間順序生成多段索引;從各索引段中提取部分?jǐn)?shù)據(jù),予以緩存,其中,根據(jù)各段的生成時(shí)間確定提取該段進(jìn)行緩存的數(shù)據(jù)量;搜索數(shù)據(jù)時(shí),先從緩存中搜索各索引段的文檔,緩存中存在目標(biāo)數(shù)據(jù)時(shí),則返回目標(biāo)數(shù)據(jù);否則,從其他存儲單元中搜索數(shù)據(jù);將從緩存所搜索的目標(biāo)數(shù)據(jù)和/或從存儲單元中所搜索的目標(biāo)數(shù)據(jù)予以合并,返回合并的數(shù)據(jù)。本發(fā)明提供的方案針對不同時(shí)間段的數(shù)據(jù),采用不同的緩存方案,提高了實(shí)時(shí)搜索的效率和靈活性。
文檔編號G06F17/30GK102737133SQ20121021794
公開日2012年10月17日 申請日期2012年6月27日 優(yōu)先權(quán)日2012年6月27日
發(fā)明者孫海濤, 崔金峰, 龔偉堅(jiān) 申請人:北京城市網(wǎng)鄰信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1