一種基于抽樣的分布式搜索結(jié)果合并翻頁方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于抽樣的分布式搜索結(jié)果合并翻頁方法及系統(tǒng),旨在顯著降低分布式搜索結(jié)果合并翻頁過程中,存在的網(wǎng)絡(luò)帶寬和計算消耗較大的問題,同時本發(fā)明亦可改良后應(yīng)用于其它分布式查詢系統(tǒng)的結(jié)果合并翻頁中。其技術(shù)方案為:對索引數(shù)據(jù)切片,形成索引文件切片,然后分到各個切片搜索服務(wù)器(shard-search?server)上,完成了索引文件的初始化工作;搜索結(jié)果合并節(jié)點(gather)接收外部系統(tǒng)的合并翻頁請求,進入基于抽樣的分布式搜索結(jié)果合并翻頁具體步驟。
【專利說明】一種基于抽樣的分布式搜索結(jié)果合并翻頁方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于海量數(shù)據(jù)處理【技術(shù)領(lǐng)域】,具體涉及一種針對分布式搜索結(jié)果合并翻頁問題的方法及系統(tǒng)。
【背景技術(shù)】
[0002]電子商務(wù)平臺(B2B、B2C等)的出現(xiàn)極大地方便了人們的生活,當人們越來越多地依賴這些平臺時,也對平臺本身提出了更高的要求:比如,在淘寶、京東等交易平臺上,人們希望能夠更多、更快、更精準地發(fā)現(xiàn)自己需要的商品;而對于電商企業(yè)而言,要滿足人們的這些要求,在技術(shù)層面上通常需要一款高效、精準的海量搜索系統(tǒng)。由于檢索數(shù)據(jù)龐大且快速增長,傳統(tǒng)的集中式的搜索系統(tǒng)已經(jīng)越來越不能勝任大型電商平臺的檢索任務(wù)。
[0003]隨著分布式及數(shù)據(jù)切片技術(shù)的發(fā)展,市面上出現(xiàn)了基于數(shù)據(jù)切片的分布式搜索系統(tǒng),其中以apache開源的solr及Elasticsearch公司的elasticsearch較具代表性。這些分布式的搜索系統(tǒng)都具備較好的可擴展性,能夠?qū)?shù)據(jù)分片索引于龐大的機器集群上,這為解決海量數(shù)據(jù)的檢索問題提供了方案。然而由于切片技術(shù)本身的局限性,這些搜索系統(tǒng)也存在著一些問題,搜索結(jié)果的合并翻頁就是其中較為突出的一個問題。試想這樣一個需求:用戶需要獲取某次搜索結(jié)果中,排序位次是第951名到第1000名的50條記錄。
[0004]對于這樣一個問題,現(xiàn)有的分布式搜索系統(tǒng)的解決辦法通常有兩個:其一,向每個搜索切片發(fā)送檢索請求,并獲取各自檢索結(jié)果的前1000名,然后在一個合并節(jié)點上,對來自于各個切片的搜索進行合并,最后取出其中位于第951名到第1000名間的50條記錄;其二,忽略排名的嚴格要求,近似地認為各個切片上對等位次的記錄在合并結(jié)果中的排名基本相當,如此即可簡單地從各個切片上對等地獲取少量記錄“湊”成目標翻頁。然而,這兩個方案都存在著各自嚴重的問題。對于方案一,目標翻頁的記錄數(shù)只有50,而搜索系統(tǒng)卻需要從各個切片上各自獲取1000條記錄,如果切片數(shù)量為n,那么一次搜索請求需要傳輸和重排序的記錄數(shù)就是nX 1000 ;如此拓展開來,當用戶所需的翻頁很深時,就會帶來巨大的網(wǎng)絡(luò)帶寬和計算開銷;而對于方案二,很明顯它犧牲了排名的準確性,這對于類似于B2B的電商平臺來說,由于排名涉及到其會員的重要利益,顯然是不能容忍的。那么,一個高效且精確的、針對分布式搜索結(jié)果的合并、排序、翻頁方案就成了當前迫切需要解決的問題。
[0005]在這個問題上,專利“合并排序分布式數(shù)據(jù)的方法”(申請?zhí)?CN03152258.0)做了相關(guān)研究,其提出的方法主要為:切片節(jié)點分別完成查詢及排序工作,然后由合并節(jié)點逐次向切片節(jié)點順序地預(yù)取一個小批量的結(jié)果集(如:每批次40條記錄);每獲取一個批次的記錄后,合并節(jié)點對現(xiàn)有記錄集進行一次排序,并根據(jù)排序結(jié)果決定向哪些切片請求下一批次的記錄;如此往復(fù),直到合并節(jié)點獲取到用戶所需的全部記錄為止。該專利提出的方法在一定程度上解決了數(shù)據(jù)過度傳輸和合并的問題。然而該專利在使用場景上卻存在著明顯的局限性,首先該專利是針對主從式可堆棧網(wǎng)絡(luò)裝置的排序性能問題提出的,因此它所解決的是如何高效地獲取前若干個記錄的問題;而本發(fā)明所提出的問題是:如何高效地獲取指定翻頁,即獲取排序結(jié)果中一個特定片段的問題,此問題實際上具有更強的“隨機性”。
【發(fā)明內(nèi)容】
[0006]為解決上述問題,本發(fā)明設(shè)計了一種基于抽樣的分布式搜索結(jié)果合并翻頁方法及系統(tǒng),旨在顯著降低分布式搜索結(jié)果合并翻頁過程中,存在的網(wǎng)絡(luò)帶寬和計算消耗較大的問題,同時本發(fā)明亦可改良后應(yīng)用于其它分布式查詢系統(tǒng)的結(jié)果合并翻頁中。
[0007]本專利提供的具體技術(shù)方案如下:
[0008]一種基于抽樣的分布式搜索結(jié)果排序翻頁方法,包括:
[0009]對索引數(shù)據(jù)切片(通?;谝恢滦詇ash值),形成索引文件切片,然后分到各個切片搜索服務(wù)器(下文稱shard-search server)上,完成了索引文件的初始化工作。
[0010]搜索結(jié)果合并節(jié)點(下文稱gather)接收外部系統(tǒng)的合并翻頁請求,進入步驟I。
[0011]步驟1:gather分別向shard-search server發(fā)送查詢及針對搜索結(jié)果的抽樣請求,并等待響應(yīng)結(jié)果。
[0012]步驟2:shard-search server依照查詢條件檢索,并對命中結(jié)果排序,最后從排序結(jié)果中獲取能夠涵蓋當前翻頁的前若干條記錄,若這些記錄數(shù)量并不巨大,可將這些記錄數(shù)據(jù)存放于臨時緩存中(以備步驟6的記錄召回);針對這些記錄,shard-search server以固定步長(如:50)做整數(shù)倍抽樣,并將抽樣記錄返回。
[0013]步驟3:gather在獲取到各shard-search server的抽樣結(jié)果后,將它們按照排序域值做統(tǒng)一排序。
[0014]步驟4:基于步驟3的排序結(jié)果,gather進一步計算出所需目標翻頁的記錄在各個切片上的大致開始位置(以下稱startpoint),同時將肯定不屬于目標翻頁的記錄排除在外。
[0015]步驟5:基于步驟4的結(jié)果,gather向各個切片發(fā)起召回記錄的請求,這些請求只召回從startpoint向下的少量記錄,其數(shù)量是抽樣步長與翻頁尺寸的和,其中翻頁尺寸指的是一頁包含搜索記錄的數(shù)量。
[0016]步驟6:各shard-search server接收到記錄召回請求后,優(yōu)先從步驟2中所述的記錄緩存中獲取所需記錄,并將其所對應(yīng)的緩存清空;如緩存中不存在相應(yīng)記錄,則可進行二次查找,最后返回目標記錄。
[0017]步驟7:gather在獲取到各shard-search server的召回結(jié)果后,將其再次按照排序域值排序,再結(jié)合各個切片對應(yīng)的startpoint從排序結(jié)果中截取出目標翻頁記錄,至此整個過程完畢。
[0018]一種基于抽樣的分布式搜索結(jié)果合并翻頁系統(tǒng),包括:
[0019]gather (搜索結(jié)果合并節(jié)點)和shard-search server (搜索切片服務(wù)器)兩個大部分,其中g(shù)ather進一步細化為TopSamplesFetcher (記錄抽樣抓取器)、TopSamplesMerger (記錄抽樣合并器)>ApproximateStartPointsCalculator (翻頁近似起點計算器)、PageFetcher (指定翻頁抓取器)、PageMerger (指定翻頁合并截取器)幾個主要部件;而shard-search server則主要包括TopSampler (記錄抽樣器)、TopSearcher (記錄查詢器)、TopResultTmpCache (記錄結(jié)果臨時緩存器)、PageGetter (翻頁獲取器)幾個主要部件。
[0020]整體上,gather與shard-search server通過網(wǎng)絡(luò)進行通信(本發(fā)明省略說明),它們按照不同的請求各自調(diào)用內(nèi)部部件進行處理,并交換計算結(jié)果,最終由gather完成最后翻頁結(jié)果的計算并返回。
[0021]gather,是整個系統(tǒng)的樞紐,用于接收外部系統(tǒng)的排序翻頁請求,并按請求信息向shard-search server分兩次發(fā)送抽樣、召回請求,其中召回請求需基于gather對于抽樣
集合的計算結(jié)果-startpoint ;最后,gather從召回的結(jié)果中準確計算出當前的目標翻
頁記錄并返回給外部系統(tǒng)。
[0022]TopSamplesFetcher,用于抓取shard-search server查詢請求結(jié)果的抽樣,包括并發(fā)地向shard-search server發(fā)送抽樣請求,并接收抽樣結(jié)果。
[0023]TopSamplesMerger,用于按查詢域排序合并TopSamplesFetcher的抓取結(jié)果。
[0024]ApproximateStartPointsCalculator,根據(jù) TopSamplesMerger 的合并結(jié)果,計算出各個 shard-search server 對應(yīng)的 startpoint。
[0025]PageFetcher,根據(jù) ApproximateStartPointsCalculator 的計算結(jié)果,向各個shard-search server發(fā)起記錄召回請求,并接收召回結(jié)果。
[0026]PageMerger,對PageFetcher的結(jié)果做最后的合并,并按照startpoint準確地從排序結(jié)果中截取出目標翻頁記錄,將結(jié)果返回gather。
[0027]shard-search server,負責(zé)接收并協(xié)調(diào)內(nèi)部部件處理來自于gather的抽樣和召回請求,最后將處理結(jié)果返回gather。
[0028]TopSearcher,用于執(zhí)行具體的記錄查詢?nèi)蝿?wù),它將命中結(jié)果進行初始排序,并截取出能夠覆蓋當前翻頁的前若干條記錄。
[0029]TopResultTmpCache,用于緩存TopSearcher的最終截取結(jié)果,該緩存與具體的
排序翻頁請求--對應(yīng),即一次完整的排序翻頁請求完成后,其對應(yīng)緩存將被一并清除;
此外,為防止內(nèi)存的無限制開銷,本發(fā)明對緩存中存放實體的數(shù)目做了上限控制,一旦達到了緩存上限將按照LRU算法自動將部分實體數(shù)據(jù)驅(qū)逐出緩存。其中,LRU算法是LeastRecently Used的縮寫,即最少使用頁面置換算法,是為虛擬頁式存儲管理服務(wù)的。
[0030]TopSampler,接受 shard-search server 的調(diào)用,并分別調(diào)用 TopSearcher 和TopResultTmpCache獲取并緩存能夠覆蓋當前翻頁的前若干條記錄,最后對這些記錄按固定步長進行抽樣并返回抽樣結(jié)果。
[0031]PageGetter,接受shard-search server的調(diào)用,負責(zé)取出需要召回的記錄,它將根據(jù)實際情況決定從TopResultTmpCache直接獲取目標記錄,或是發(fā)起二次查詢獲取目標記錄。
[0032]本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點:
[0033]I)能夠支持分布式搜索領(lǐng)域的大結(jié)果集的合并及高深度翻頁,同時本發(fā)明并不局限于搜索領(lǐng)域,具有較高的通用性。
[0034]2)通過將合并翻頁的過程所需的數(shù)據(jù),分解為抽樣和召回兩次請求來獲取,一方面避免了大量的記錄數(shù)據(jù)從shard-search server向gather傳輸,同時也避免了 gather對它們的完全再排序,極大地降低網(wǎng)絡(luò)帶寬和計算消耗。
[0035]3)在保證效率的同時,本發(fā)明仍不失排序的嚴格性,這滿足了那些對排序有著嚴格要求的應(yīng)用場景。
[0036]4)本發(fā)明中,shard-search server在抽樣階段對命中的記錄結(jié)果做了選擇性緩存,這很好地避免了記錄召回階段二次查詢操作的發(fā)生,極大提升了整個合并翻頁過程的效率。
【專利附圖】
【附圖說明】
[0037]圖1為本發(fā)明實施例的系統(tǒng)結(jié)構(gòu)圖。
[0038]圖2為本發(fā)明實施例的合并翻頁方法整體時序圖。
[0039]圖3為本發(fā)明實施例的抽樣合并及startpoint計算過程圖。
[0040]圖4為本發(fā)明實施例的召回記錄合并及翻頁截取過程圖。
【具體實施方式】
[0041]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述。
[0042]如圖1所示,為本發(fā)明實施例的系統(tǒng)結(jié)構(gòu),為了描述方便,假設(shè)本實施例中把索引文件數(shù)據(jù)拆分成兩個切片,分別部署于2個shard-search server,包括:
[0043]一 個 gather serverlOl,其中內(nèi)置 TopSamplesFetcherl02、TopSamplesMerger 103、ApproximateStartPointsCalculator 104、PageFetcher 105、PageMergerl06 幾個部件;兩個切片搜索服務(wù)器 shardl-search serverl07、shardl_searchserverll2,其中 shardl-search serverl07 內(nèi)置 TopSamplerl08、TopSearcher 109>TopResultTmpCachel 10、PageGetterlll 幾個部件;而另一個切片服務(wù)器 shard2_searchserver 112 貝內(nèi) 置 TopSampler 113> TopSearcherl 14> TopResultTmpCachell5>PageGetterl 16 幾個部件;shardl_search serverl07 與 shard2_search server 112 分別被部署了不同的數(shù)據(jù)切片。
[0044]如圖2所示,為本發(fā)明實施例的合并翻頁方法整體時序圖,為方便下面的圖例制作及闡述方便,這里首先假設(shè)外部系統(tǒng)請求的幾個要素:1、搜索結(jié)果以記錄評分的降序排列,2、本例一頁包含5條記錄,且目標翻頁為排序結(jié)果的第56名至第60名間的5條記錄,
3、抽樣步長為10。需要聲明的是:以上條件并非本發(fā)明的局限場景,純粹為圖例制作及闡述方便而設(shè);另外,由于切片評分的公平性并非本發(fā)明要解決的問題,這里假設(shè)各切片的評分是公平的,即可在同一環(huán)境下進行比較。其詳細過程如下:
[0045]步驟201:gather serverlOl接收到外部系統(tǒng)合并翻頁請求,調(diào)用TopSamplesFetcher 102 分別向 shardl-search server 107 和 shard2_search server 112 發(fā)送查詢及抽樣請求。
[0046]步驟2O2:shardl-search ServerlO7 和 shard2_search serverll2 接收到請求后,分別調(diào)用TopSearcher 109和TopSearcher 114執(zhí)行查詢操作,并各自將命中結(jié)果按評分排序,然后各自截取其中的前60條記錄作為結(jié)果,并將結(jié)果分別返回給TopSamplelOS和TopSamplell3。
[0047]步驟203:TopSamplel08和TopSamplell3分別對前60條記錄做步長為10的等距抽樣,如此各自抽樣出6條記錄作為抽樣集合;同時TopSamplel08和TopSamplel 13分別將各自獲取的前60條記錄緩存于臨時緩存TopResultTmpCachelll和TopResultTmpCachel 16中,以備記錄召回時取回。[0048]步驟204:shardl_search serverl07 和 shard2_search serverll2 分別將TopSamplel08 和 TopSamplell3 的抽樣結(jié)果通過網(wǎng)絡(luò)返回給 gather serverlOl。
[0049]步驟205:gather serverlOl 收到 shardl-search ServerlO7 和 shard2_searchserverll2返回的抽樣結(jié)果后,調(diào)用TopSamplesMergerl03對抽樣結(jié)果按評分做再次排序。
[0050]步驟206:ApproximateStartPointsCalculator 104 基于步驟 205 對記錄抽樣的排序結(jié)果,分別計算出針對 shardl-search serverl07 和 shard2_search serverll2 的startpoint。步驟205與本步驟具體的計算實施例如圖3所示。
[0051]主要內(nèi)容包括:
[0052]1:來自于shardl-search serverl07的抽樣結(jié)果301,其中包含標識為A?F的記錄及其評分。
[0053]2:來自于shard2_search serverll2的抽樣結(jié)果302,其中包含標識為G?L的記錄及其評分。
[0054]3:ApproximateStartPointsCalculatorl04 對抽樣集合的排序結(jié)果 303,其中除了記錄標識及評分,還加入了每個記錄前置記錄的數(shù)量,以輔助startpoint計算。
[0055]4:shardl-search server 107 與 shard2_search serverl12 各自的startpoint-304 和 305。
[0056]主要計算過程包括:
[0057]1:對抽樣結(jié)果301與抽樣結(jié)果302按記錄評分重新排序,得到排序結(jié)果303。
[0058]2:根據(jù)目標翻頁排除無需召回的記錄,本例中目標翻頁是第56名到第60名間的記錄,借助于303可以確定排名位于記錄B之前的記錄無需召回;*B向上找到最近的分屬shardl-search serverl07與shard2_search serverl 12的兩個抽樣記錄,以它們做為召回記錄的startpoint,很顯然在本例中它們是記錄304和記錄305。
[0059]步驟2O7:gather serverlOl 分別向 shardl-search serverl07 與 shard2_searchserverl 12發(fā)送記錄召回請求,召回請求以各自的startpoint為起點,即startpoint之前的文檔不再召回之列。此外,為保證召回記錄的完整性,召回記錄的數(shù)量為抽樣步長與每個頁面包含搜索記錄數(shù)量的和,本例中應(yīng)為10+5 = 15。
[0060]步驟208:shardl-search serverl07 與 shard2_search serverll2 分別調(diào)用PageGetterllO和PageGetterl 15獲取召回記錄。PageGetter首先嘗試從TopResultTmpCache中獲取抽樣階段記錄緩存,如能成功獲取則從中截取出需召回記錄,最后將記錄緩存從TopResultTmpCache中清除;否則將發(fā)起二次查詢,然后從查詢結(jié)果中截取出需召回記錄。
[0061]步驟2O9:shardl-search ServerlO7 與 shard2_search serverll2 分別將步驟208的召回結(jié)果通過網(wǎng)絡(luò)返回給gather serverlOl。
[0062]步驟210:gather serverlOl接收到所有的召回記錄后,首先調(diào)用PageMergerl06對它們做再次排序,然后根據(jù)startpoint從排序結(jié)果中準確計算出本次翻頁請求所需的實際記錄集合,并返回到外部系統(tǒng)。本步驟具體的計算實施例如圖4所示。
[0063]主要內(nèi)容包括:
[0064]1:來自于shardl-search serverl07的記錄召回結(jié)果401,其中包含標識為B+n、C及C+n的記錄及其評分,B+n表示排名介于于B記錄與C記錄之間的記錄,而C+n則表示排名位于C記錄之后的記錄。
[0065]2:來自于shard2_search serverll2的記錄召回結(jié)果402,其中包含標識為I+n、J及J+n的記錄及其評分,I+n表示排名介于于I記錄與J記錄之間的記錄,而J+n則表示排名位于J記錄之后的記錄。
[0066]3:PageMergerl06對召回記錄集合按評分所作的重排序結(jié)果403。
[0067]4:PageMergerl06在重排序結(jié)果403基礎(chǔ)上,根據(jù)startpoint截取的目標翻頁結(jié)果,其中陰影部分為本例最終所需的5條記錄。
[0068]主要計算過程及原理包括:
[0069]1:對召回結(jié)果401與召回結(jié)果402按記錄評分重新排序,得到排序結(jié)果403。
[0070]2:上一步結(jié)果包含30條記錄,需要從中進一步截取出第56名到第60名間的記錄。本例中,向 shardl-search serverl07 和 shard2_search serverll2 發(fā)起召回的startpoint分別為B和I記錄;那么從全局排序上看,位于本次召回記錄集合之前的記錄應(yīng)包括:位于shardl-search serverl07上的B記錄及其之前的記錄、位于shard2_searchserverll2上的I記錄及其之前的記錄,共50條記錄;因此,本次所需翻頁的第56名應(yīng)對應(yīng)到結(jié)果403的第6名,以此而下截取5條記錄即為本次的翻頁記錄結(jié)果,如圖4中的陰影部分所示。
[0071]本發(fā)明還可有其他多種實施方式,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
【權(quán)利要求】
1.一種基于抽樣的分布式搜索結(jié)果排序翻頁方法,其特征在于,包括: 對索引數(shù)據(jù)切片,形成索引文件切片,然后分到各個切片搜索服務(wù)器(shard-searchserver)上,完成了索引文件的初始化工作; 搜索結(jié)果合并節(jié)點(gather)接收外部系統(tǒng)的合并翻頁請求,進入步驟I ; 步驟1:搜索結(jié)果合并節(jié)點(gather)分別向各個切片搜索服務(wù)器發(fā)送查詢及針對搜索結(jié)果的抽樣請求,并等待響應(yīng)結(jié)果; 步驟2:切片搜索服務(wù)器(shard-search server)依照查詢條件檢索,并對命中結(jié)果排序,最后從排序結(jié)果中獲取能夠涵蓋當前翻頁的前若干條記錄,針對這些記錄,切片搜索服務(wù)器以固定步長做整數(shù)倍抽樣,并將抽樣記錄返回; 步驟3:搜索結(jié)果合并節(jié)點(gather)在獲取到各個切片搜索服務(wù)器(shard-searchserver)的抽樣結(jié)果后,將它們按照排序域值做統(tǒng)一排序; 步驟4:基于步驟3的排序結(jié)果,搜索結(jié)果合并節(jié)點(gather)進一步計算出所需目標翻頁的記錄在各個切片上的大致開始位置(startpoint),同時將肯定不屬于目標翻頁的記錄排除在外; 步驟5:基于步驟4的結(jié)果,搜索結(jié)果合并節(jié)點(gather)向各個切片發(fā)起召回記錄的請求,這些請求只召回從目標翻頁記錄在各個切片上大致開始位置(startpoint)向下的少量記錄; 步驟6:各個切片搜索服務(wù)器(shard-search server)接收到記錄召回請求,查找后返回目標記錄; 步驟7:搜索結(jié)果合并節(jié)點(gather)在獲取到各個切片搜索服務(wù)器(shard-searchserver)的召回結(jié)果后,將其再次按照排序域值排序,再結(jié)合各個切片對應(yīng)的目標翻頁記錄在各個切片上大致開始位置(startpoint)從排序結(jié)果中截取出目標翻頁記錄,至此整個過程完畢。
2.根據(jù)權(quán)利要求1所述的基于抽樣的分布式搜索結(jié)果排序翻頁方法,其特征在于: 步驟I中,索引數(shù)據(jù)切片是基于一致性hash值。
3.根據(jù)權(quán)利要求1所述的基于抽樣的分布式搜索結(jié)果排序翻頁方法,其特征在于: 步驟2中,若這些記錄數(shù)量并不巨大,則將這些記錄數(shù)據(jù)存放于臨時緩存中,以備步驟6的記錄召回。
4.根據(jù)權(quán)利要求1所述的基于抽樣的分布式搜索結(jié)果排序翻頁方法,其特征在于: 步驟5中,請求召回少量記錄的數(shù)量是抽樣步長與翻頁尺寸的和。
5.根據(jù)權(quán)利要求1所述的基于抽樣的分布式搜索結(jié)果排序翻頁方法,其特征在于: 步驟6中,各個切片搜索服務(wù)器(shard-search server)接收到記錄召回請求后,優(yōu)先從步驟2中所述的記錄緩存中獲取所需記錄,并將其所對應(yīng)的緩存清空;如緩存中不存在相應(yīng)記錄,則可進行二次查找,最后返回目標記錄。
6.一種基于抽樣的分布式搜索結(jié)果合并翻頁系統(tǒng),其特征在于,包括: 搜索結(jié)果合并節(jié)點(gather) 和搜索切片服務(wù)器(shard-search server)兩個大部分,其中所述搜索結(jié)果合并節(jié)點(gather)由記錄抽樣抓取器(TopSamplesFetcher)、記錄抽樣合并器(TopSamplesMerger)、翻頁近似起點計算器(ApproximateStartPointsCalculator)、指定翻頁抓取器(PageFetcher)、指定翻頁合并截取器(PageMerger)構(gòu)成;所述搜索切片服務(wù)器(shard-search server)包括記錄抽樣器(TopSampler)、記錄查詢器(TopSearcher)、記錄結(jié)果臨時緩存器(TopResultTmpCache)、翻頁獲取器(PageGetter)。
7.根據(jù)權(quán)利要求6所述的基于抽樣的分布式搜索結(jié)果合并翻頁系統(tǒng),其特征在于: 所述搜索結(jié)果合并節(jié)點(gather)和搜索切片服務(wù)器(shard-search server)通過網(wǎng)絡(luò)進行通信,它們按照不同的請求各自調(diào)用內(nèi)部部件進行處理,并交換計算結(jié)果,最終由所述搜索結(jié)果合并節(jié)點(gather)完成最后翻頁結(jié)果的計算并返回; 所述搜索結(jié)果合并節(jié)點(gather),是整個系統(tǒng)的樞紐,用于接收外部系統(tǒng)的排序翻頁請求,并按請求信息向所述搜索切片服務(wù)器(shard-search server)分兩次發(fā)送抽樣、召回請求,其中召回請求需基于所述搜索結(jié)果合并節(jié)點(gather)對于抽樣集合的計算結(jié)果——目標翻頁記錄在各個切片上大致開始位置(startpoint);最后,所述搜索結(jié)果合并節(jié)點(gather)從召回的結(jié)果中準確計算出當前的目標翻頁記錄并返回給外部系統(tǒng)。
8.根據(jù)權(quán)利要求7所述的基于抽樣的分布式搜索結(jié)果合并翻頁系統(tǒng),其特征在于: 所述記錄抽樣抓取器(TopSamplesFetcher),用于抓取所述搜索切片服務(wù)器(shard-search server) 查詢請求結(jié)果的抽樣,包括并發(fā)地向所述搜索切片服務(wù)器(shard-search server)發(fā)送抽樣請求,并接收抽樣結(jié)果; 所述記錄抽樣合并器(TopSamplesMerger),用于按查詢域排序合并所述記錄抽樣抓取器(TopSamplesFetcher)的抓取結(jié)果; 所述翻頁近似起點計算器(ApproximateStartPointsCalculator),根據(jù)所述記錄抽樣合并器(TopSamplesMerger)的合并結(jié)果,計算出各個所述搜索切片服務(wù)器(shard-searchserver)對應(yīng)的目標翻頁記錄在各個切片上大致位置開始(startpoint); 所述指定翻頁抓取器(PageFetcher),根據(jù)所述翻頁近似起點計算器(ApproximateStartPointsCalculator)的計算結(jié)果,向各個所述搜索切片服務(wù)器(shard-search server)發(fā)起記錄召回請求,并接收召回結(jié)果; 所述指定翻頁合并截取器(PageMerger),對所述指定翻頁抓取器(PageFetcher)的結(jié)果做最后的合并,并按照目標翻頁記錄在各個切片上大致開始位置(startpoint)準確地從排序結(jié)果中截取出目標翻頁記錄,將結(jié)果返回所述搜索結(jié)果合并節(jié)點(gather)。
9.根據(jù)權(quán)利要求6所述的基于抽樣的分布式搜索結(jié)果合并翻頁系統(tǒng),其特征在于: 所述搜索結(jié)果合并節(jié)點(gather)和搜索切片服務(wù)器(shard-search server)通過網(wǎng)絡(luò)進行通信,它們按照不同的請求各自調(diào)用內(nèi)部部件進行處理,并交換計算結(jié)果,最終由所述搜索結(jié)果合并節(jié)點(gather)完成最后翻頁結(jié)果的計算并返回; 所述搜索切片服務(wù)器(shard-search server),負責(zé)接收并協(xié)調(diào)內(nèi)部部件處理來自于所述搜索結(jié)果合并節(jié)點(gather)的抽樣和召回請求,最后將處理結(jié)果返回所述搜索結(jié)果合并節(jié)點(gather)。
10.根據(jù)權(quán)利要求9所述的基于抽樣的分布式搜索結(jié)果合并翻頁系統(tǒng),其特征在于: 所述記錄查詢器(TopSearcher),用于執(zhí)行具體的記錄查詢?nèi)蝿?wù),它將命中結(jié)果進行初始排序,并截取出能夠覆蓋當前翻頁的前若干條記錄; 所述記錄結(jié)果臨時緩存器(TopResultTmpCache),用于所述緩存記錄查詢器(TopSearcher)的最終截取結(jié)果,該緩存與具體的排序翻頁請求一一對應(yīng),即一次完整的排序翻頁請求完成后,其對應(yīng)緩存將被一并清除;同時,緩存中存放實體的數(shù)目一旦達到了緩存上限將按照最少使用頁面置換算法(LRU)自動將部分實體數(shù)據(jù)驅(qū)逐出緩存; 所述記錄抽樣器(TopSampler),接受所述搜索切片服務(wù)器(shard-search server)的調(diào)用,并分別調(diào)用所述記錄查詢器(TopSearcher)和所述記錄結(jié)果臨時緩存器(TopResultTmpCache)獲取并緩存能夠覆蓋當前翻頁的前若干條記錄,最后對這些記錄按固定步長進行抽樣并返回抽樣結(jié)果; 所述翻頁獲取器 (PageGetter),接受所述搜索切片服務(wù)器(shard-search server)的調(diào)用,負責(zé)取出需要召回的記錄,它將根據(jù)實際情況決定從所述記錄結(jié)果臨時緩存器(TopResultTmpCache)直接獲取目標記錄,或是發(fā)起二次查詢獲取目標記錄。
【文檔編號】G06F17/30GK103942346SQ201410204444
【公開日】2014年7月23日 申請日期:2014年5月14日 優(yōu)先權(quán)日:2014年5月14日
【發(fā)明者】梁峰 申請人:焦點科技股份有限公司