亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于閾值的快速啟動(dòng)Top-k查詢處理算法

        2017-11-27 08:58:59宋省身楊岳湘
        中文信息學(xué)報(bào) 2017年5期
        關(guān)鍵詞:鏈表支點(diǎn)文檔

        江 宇,宋省身,楊岳湘,姜 琨

        (1. 西北核技術(shù)研究所,陜西 西安 710024;2. 國防科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;3. 國防科學(xué)技術(shù)大學(xué) 信息中心,湖南 長(zhǎng)沙 410073;4. 西安交通大學(xué) 電信學(xué)院,陜西 西安 710049)

        基于閾值的快速啟動(dòng)Top-k查詢處理算法

        江 宇1,2,宋省身2,楊岳湘3,姜 琨4

        (1. 西北核技術(shù)研究所,陜西 西安 710024;2. 國防科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;3. 國防科學(xué)技術(shù)大學(xué) 信息中心,湖南 長(zhǎng)沙 410073;4. 西安交通大學(xué) 電信學(xué)院,陜西 西安 710049)

        Top-k查詢是搜索引擎領(lǐng)域廣泛應(yīng)用的技術(shù)之一,該算法從海量數(shù)據(jù)中返回最符合用戶需求的前k個(gè)結(jié)果,在執(zhí)行時(shí)能避免對(duì)大部分無關(guān)文檔的打分處理。Top-k 查詢雖然極大提升了查詢性能,但其存在的慢啟動(dòng)問題并未得到有效解決。為此,該文首先提取倒排索引的靜態(tài)Top-k信息,再動(dòng)態(tài)計(jì)算針對(duì)具體查詢?cè)~項(xiàng)的初始閾值,在此基礎(chǔ)上,結(jié)合MaxScore和WAND算法,提出了快速啟動(dòng)的Top-k查詢處理算法。實(shí)驗(yàn)結(jié)果表明,該方法能夠有效解決上述問題,具有良好的性能。

        Top-k 查詢處理;閾值計(jì)算;倒排索引

        1 引言

        對(duì)索引文檔進(jìn)行查詢排名是信息檢索系統(tǒng)最主要的核心任務(wù)。目前大型搜索引擎擁有的網(wǎng)頁數(shù)據(jù)已達(dá)PB級(jí)別且每日處理成千上萬的查詢請(qǐng)求,使得系統(tǒng)在查詢處理過程中耗費(fèi)大量時(shí)間。因此,近年來針對(duì)查詢處理優(yōu)化的相關(guān)研究得到了商業(yè)界和學(xué)術(shù)界的重點(diǎn)關(guān)注。

        盡管當(dāng)前搜索引擎都采用基于各類特征值的排序方法,但對(duì)所有候選結(jié)果都進(jìn)行如此復(fù)雜的計(jì)算顯然代價(jià)過大。通常,系統(tǒng)會(huì)先使用例如BM25等相對(duì)簡(jiǎn)單的檢索模型選出小部分可能進(jìn)入最終結(jié)果集的文檔,再在后續(xù)階段中引入特征值計(jì)算這些文檔的分?jǐn)?shù)。在此過程中,Top-k查詢處理方法是普遍采用的技術(shù)之一。Top-k查詢處理又稱提前停止或動(dòng)態(tài)剪枝技術(shù),目的是在評(píng)估少量候選文檔的前提下,試圖找出與查詢?cè)~最相關(guān)的前k個(gè)結(jié)果。Top-k查詢處理技術(shù)避免了對(duì)所有文檔的檢查打分,極大地提高了搜索引擎的效率。

        在前人提出的多種Top-k查詢算法中,最為經(jīng)典的是基于DAAT的MaxScore算法[1]和WAND算法[2]。這兩種算法使用跳躍訪問倒排鏈表和部分打分的方式,減少了窮盡遍歷算法90%以上的查詢開銷。自提出以來,研究人員[3-5]主要結(jié)合索引結(jié)構(gòu)、文檔估分方式和遍歷策略等方面對(duì)算法進(jìn)行了改進(jìn)和優(yōu)化,但其存在的“慢啟動(dòng)”問題一直沒有得到有效解決?!奥龁?dòng)”問題,即在查詢剛開始時(shí),對(duì)倒排鏈表的遍歷速度相對(duì)較慢,隨著查詢過程的進(jìn)行閾值才會(huì)逐漸增大,從而加快查詢處理速度。

        為了解決這個(gè)問題,本文圍繞初始閾值的設(shè)置方法展開研究,在保證算法安全性的前提下,對(duì)MaxScore和WAND算法進(jìn)行相關(guān)優(yōu)化,提出了快速啟動(dòng)的MaxScore算法(rapid start MaxScore, RS-MaxScore)和WAND算法(rapid start WAND, RS-WAND),并在TREC GOV2數(shù)據(jù)集上對(duì)這兩種算法進(jìn)行了實(shí)現(xiàn)和驗(yàn)證。

        本文第二節(jié)介紹MaxScore和WAND算法的相關(guān)工作;第三節(jié)介紹快速啟動(dòng)的Top-k查詢處理算法RS-MaxScore和RS-WAND;第四節(jié)給出本文的相關(guān)實(shí)驗(yàn)結(jié)果及結(jié)果分析;第五節(jié)總結(jié)全文并提出未來工作。

        2 相關(guān)工作

        在搜索引擎和信息檢索領(lǐng)域中,根據(jù)對(duì)倒排鏈表的遍歷方式,大體可分為以下兩類查詢處理策略: Term-At-A-Time(TAAT)和Document-At-A-Time(DAAT)[6]。TAAT每次只打開一個(gè)查詢?cè)~項(xiàng)對(duì)應(yīng)的倒排鏈,然后對(duì)其進(jìn)行完整的遍歷,并對(duì)所有在倒排鏈中出現(xiàn)的文檔的評(píng)分進(jìn)行累加。DAAT則同時(shí)打開所有查詢?cè)~項(xiàng)的倒排鏈,在并行遍歷倒排鏈的過程中,每次對(duì)一個(gè)文檔進(jìn)行完整打分。DAAT在大規(guī)模數(shù)據(jù)集的良好性能,使得研究人員提出了多種基于DAAT的 Top-k查詢算法。目前,大型搜索引擎普遍采用的是MaxScore和 WAND。

        2.1.1 MaxScore

        MaxScore算法對(duì)每個(gè)查詢?cè)~項(xiàng)的倒排鏈保留一個(gè)指向當(dāng)前倒排項(xiàng)的指針,同時(shí)儲(chǔ)存每個(gè)倒排鏈的最大分?jǐn)?shù),并將鏈表分為必要和非必要兩類。假設(shè)當(dāng)前Top-k的閾值為θ,首先將倒排鏈按最大分?jǐn)?shù)從大到小排序并對(duì)最大分?jǐn)?shù)進(jìn)行累加,如果累加分?jǐn)?shù)小于θ,則稱這些倒排鏈為非必要鏈表,反之其他的倒排鏈稱為必要鏈表。由于只有至少包含一個(gè)必要詞項(xiàng)的文檔才有可能進(jìn)入Top-k,我們便可以通過對(duì)必要鏈表中的文檔進(jìn)行打分來得到最后結(jié)果。從必要鏈表中文檔編號(hào)(docID)最小的文檔開始作為候選文檔,按順序進(jìn)行局部打分,即首先計(jì)算候選文檔在必要鏈表中的總分?jǐn)?shù),如果該分?jǐn)?shù)加上非必要鏈表的最大累加分?jǐn)?shù)仍小于θ,即可終止打分;否則繼續(xù)累加該文檔在非必要鏈表中的分?jǐn)?shù),直到得到完整打分或者在累加過程中提前終止。

        圖1給出了MaxScore算法在查詢過程中的例子。圖中圓圈表示倒排鏈的當(dāng)前指針,圓圈中的數(shù)字表示當(dāng)前指針指向文檔的文檔號(hào)。按照倒排鏈最大分?jǐn)?shù)排序后,該查詢的4個(gè)倒排鏈為{green,blue,red,yellow},它們的最大分?jǐn)?shù)分別為11、7、4、2,而此時(shí)最大分?jǐn)?shù)累加數(shù)組的值為20、13、6、2。若當(dāng)前閾值θ=8,則必要鏈表T={green,blue},選取T中文檔號(hào)最小的文檔56為候選文檔。首先對(duì)blue打分,假設(shè)此時(shí)有兩種情況: ①blue的分?jǐn)?shù)為5。繼續(xù)對(duì)red進(jìn)行打分,在red中跳過56之前的文檔向后查找,結(jié)果并未找到56故red分?jǐn)?shù)為0。而此時(shí)56號(hào)文檔的真實(shí)分?jǐn)?shù)5加上yellow的最大分?jǐn)?shù)2為7,小于當(dāng)前閾值,因此不需要再對(duì)yellow進(jìn)行打分,即提前結(jié)束打分過程,重新選取下一個(gè)候選文檔;②blue的分?jǐn)?shù)為6。對(duì)red進(jìn)行同①的處理之后,繼續(xù)對(duì)yellow進(jìn)行打分,當(dāng)前指針從7號(hào)文檔跳躍到56號(hào)文檔,計(jì)算得到的分?jǐn)?shù)與6相加,若大于當(dāng)前閾值8,則將56號(hào)文檔插入結(jié)果堆中并更新閾值;若小于當(dāng)前閾值,則重新選擇候選文檔。

        圖1 MaxScore算法示例

        2.1.2 WAND

        WAND算法同樣需要預(yù)先計(jì)算并儲(chǔ)存每個(gè)倒排鏈的最大分?jǐn)?shù)。該算法主要有三個(gè)步驟: ①選擇支點(diǎn)。首先按照各倒排鏈當(dāng)前指針指向的docID的升序?qū)Φ古沛溸M(jìn)行排列,再依次對(duì)倒排鏈的最大分?jǐn)?shù)進(jìn)行累加,當(dāng)累加分?jǐn)?shù)首次大于或等于當(dāng)前Top-k的閾值θ時(shí),最后一個(gè)參與累加的倒排鏈對(duì)應(yīng)的詞項(xiàng)即為支點(diǎn)詞,其當(dāng)前指針指向的docID為支點(diǎn)ID。②檢查對(duì)齊。即以docID為準(zhǔn),對(duì)所有排列在支點(diǎn)詞之前的詞項(xiàng)進(jìn)行對(duì)齊——使倒排鏈的指針移動(dòng)到docID大于或等于支點(diǎn)ID的倒排項(xiàng)上,如果返回的結(jié)果中有docID大于支點(diǎn)ID,則回到第一步對(duì)所有倒排鏈再次排序并重新選擇支點(diǎn)詞;如果所有返回結(jié)果都等于支點(diǎn)ID,則docID為支點(diǎn)ID的文檔為候選文檔,進(jìn)行第三步。③對(duì)候選文檔進(jìn)行完整打分,用以判斷其是否能夠真正進(jìn)入Top-k,然后將所有指針向前移動(dòng)一步。

        圖2為WAND算法在查詢過程中選擇支點(diǎn)的例子。按照當(dāng)前文檔號(hào)從小到大排序后,該查詢的4個(gè)倒排鏈為{blue,red,green,yellow},它們的最大分?jǐn)?shù)分別為7、4、11、2。假設(shè)當(dāng)前閾值θ=20,則最大分?jǐn)?shù)累加到green時(shí)分?jǐn)?shù)首次大于閾值(7+4+11gt;20),此時(shí)green為支點(diǎn)詞,56為支點(diǎn)ID。此時(shí)應(yīng)對(duì)blue和red兩個(gè)倒排鏈進(jìn)行對(duì)齊,若對(duì)齊成功即兩個(gè)倒排鏈的當(dāng)前文檔號(hào)都為56,則將56號(hào)文檔視為候選文檔,進(jìn)行完全打分,最后以文檔真實(shí)分?jǐn)?shù)判斷是否能夠插入結(jié)果堆。若對(duì)齊不成功,如圖2所示,blue的當(dāng)前文檔號(hào)為70,則對(duì)倒排鏈重新排序,變?yōu)閧red,green,blue,yellow},重新選擇支點(diǎn)詞和支點(diǎn)ID。

        圖2 WAND算法示例

        從上可知,大體來講MaxScore和WAND的主要差別是對(duì)各倒排鏈表遍歷的順序不同。而共同之處在于它們都在查詢過程中維護(hù)一個(gè)大小為k的堆來保存當(dāng)前得分最多的k個(gè)文檔,并以堆中的最小分?jǐn)?shù)作為閾值。若新的文檔分?jǐn)?shù)可能大于閾值,則將其視作候選文檔,并進(jìn)行完全打分,當(dāng)完全打分后的分?jǐn)?shù)超過閾值,便將相應(yīng)文檔插入堆并更新閾值;反之,則放棄該文檔繼續(xù)遍歷倒排鏈表,直到所有鏈表均遍歷完成。由此,算法的優(yōu)勢(shì)在于避免對(duì)估分低于閾值的文檔進(jìn)行精確評(píng)分,使得查詢效率大幅提升。但是,在查詢剛開始時(shí),堆中沒有文檔,初始閾值為0,任何文檔都能進(jìn)入堆中,而這些文檔很可能在后面的查詢中被相關(guān)度更高的文檔淘汰。實(shí)際上,在開始查詢的一段時(shí)間里,過低的閾值并沒有起到很好的“過濾”作用,使大量相關(guān)度小的文檔的處理耗費(fèi)太多時(shí)間。隨著查詢處理的進(jìn)行,閾值會(huì)逐漸變大,查詢處理速度將明顯變快,這就是上述算法的慢啟動(dòng)問題。由此可見,將初始閾值設(shè)置為某個(gè)大于0的值可以加快查詢處理過程,并且當(dāng)初始閾值大小等于查詢結(jié)束時(shí)堆的最終閾值(即結(jié)果集的最小分?jǐn)?shù)),將取得最好的加速效果。

        Broder等人[2]在提出WAND算法時(shí)便對(duì)閾值設(shè)置進(jìn)行了討論,但只對(duì)合取查詢的非零初始閾值給出了優(yōu)化方案,但對(duì)于應(yīng)用更廣的析取查詢沒有深入研究;Strohman等人[7]和Rossi等人[8]在分別改進(jìn)MaxScore和WAND時(shí)使用多層索引保存一定比例的高分?jǐn)?shù)文檔,計(jì)算這些文檔分?jǐn)?shù)并使用最小分?jǐn)?shù)作為初始閾值,對(duì)提高查詢效率有明顯效果,但與最優(yōu)值相比還有一定差距。Ding 和Suel在[9]中將初始閾值的估算作為開放性問題,證明當(dāng)初始閾值與最終閾值相等時(shí),WAND的查詢時(shí)間將縮短20%,雖具有指導(dǎo)意義,但并未對(duì)計(jì)算方法展開討論。Carvalho等人[10]提出了一種啟發(fā)式BMW算法,以查詢?cè)~對(duì)應(yīng)倒排鏈中排名第k的部分分?jǐn)?shù)作為初始閾值,使查詢處理過程有所加快,但這種估算方式依舊不夠準(zhǔn)確。

        結(jié)合前人的工作,本文繼續(xù)對(duì)慢啟動(dòng)問題的解決方案進(jìn)行探討,提出了一種既保證算法安全性,又更加接近最優(yōu)值的計(jì)算方法,并在TREC GOV2數(shù)據(jù)集上對(duì)該方法進(jìn)行了實(shí)現(xiàn)和驗(yàn)證。

        3 快速啟動(dòng)的Top-k查詢處理算法

        3.1 基本思想

        初始閾值的計(jì)算涉及兩個(gè)問題: ①如何保證算法的安全性;②如何設(shè)置這個(gè)非零值,使慢啟動(dòng)問題能有效解決。Top-k查詢算法的安全性,是指使用該算法所得到的結(jié)果和使用窮盡查詢算法得到的結(jié)果是完全相同的,這里的“相同”包括三個(gè)方面: 相同的文檔、相同的排序和相同的分?jǐn)?shù)??梢钥闯觯鲜鰞蓚€(gè)問題是相互矛盾的。從解決慢啟動(dòng)問題的角度看,過小的初始閾值起不到很好的加速效果,故其值應(yīng)當(dāng)越大越好。但另一方面,過大的初始閾值將使查詢變得不安全。顯然,當(dāng)其值大于結(jié)果集的最小分?jǐn)?shù)時(shí),部分本應(yīng)進(jìn)入最終結(jié)果的文檔將會(huì)被“丟棄”。實(shí)際上,結(jié)果集的最小分?jǐn)?shù)RS正是初始閾值的最優(yōu)解。但這個(gè)最優(yōu)解在查詢處理過程完成后才能得到,事先無法進(jìn)行預(yù)測(cè)或計(jì)算,所以研究人員都致力于讓初始閾值盡可能接近該值。

        為了更好地估算初始閾值,本文首先在索引階段提取出每個(gè)倒排鏈分?jǐn)?shù)排名前k的k個(gè)倒排項(xiàng),作為靜態(tài)信息將其儲(chǔ)存在toplist結(jié)構(gòu)當(dāng)中。對(duì)于給定的查詢,先對(duì)查詢?cè)~對(duì)應(yīng)倒排鏈的toplist中的文檔進(jìn)行完全打分,然后把分?jǐn)?shù)按從大到小的順序進(jìn)行排列,最后以第k個(gè)分?jǐn)?shù)TS作為初始閾值。

        證:令

        Sk={sx∈S|sxgt;sk-1,0lt;k≤n},

        綜上,按照上述方法計(jì)算的初始閾值不會(huì)“丟棄”原本最終排名能夠進(jìn)入前k的文檔,保證了算法的安全性。并且當(dāng)查詢?cè)~對(duì)應(yīng)倒排鏈的toplist重合文檔數(shù)量越多,TS越接近最優(yōu)解RS;在極端情況下,若toplist文檔完全相同,計(jì)算得到值等于RS。

        3.2 RS-MaxScore和RS-WAND算法

        本文將上節(jié)所述的初始閾值計(jì)算方法與現(xiàn)有兩個(gè)經(jīng)典Top-k查詢算法MaxScore和 WAND相結(jié)合,得到RS-MaxScore算法(偽代碼見算法1)和RS-WAND算法(偽代碼見算法2)。

        算法1RS-MaxScore算法

        1.RS-MaxScore(queryTerms[0...q-1] ,k)

        2. I[]=getIterators[0...q-1], termID[]=getTermID[0...q-1], numTerms=q,numReqTerms=q; //I為倒排鏈遍歷器

        3. initReqScore=calcThreshold (termID[0...q-1]); //計(jì)算初始閾值

        4. reqScore=initReqScore;

        5. 計(jì)算最大分?jǐn)?shù)累加數(shù)組accScores[0...q-1];

        6. loop:whilenumReqTermsgt;0do

        7.fori=0;ilt;numReqTerms;i=i+1do

        8.ifI[i].doc==lastdocthen

        9. 刪除I[i], 更新accScores[], numTerms--, numReqTerms--;

        10.whilenumReqTermsgt;0andaccScores[numReqTerms-1] lt; reqScoredo

        11. numReqTerms--;

        12.ifnumReqTerms lt;= 0then

        13. break loop;

        14. 選擇I[0...numReqTerms]中的最小當(dāng)前文檔號(hào)為canddoc; //candoc為候選文檔號(hào)

        15. score=0;

        16.fori = 0; i lt; numTerms and score + accScores[i] gt;= reqScore; i=i+1do

        17.ifigt;=numReqTerms and Ii.skipTo(canddoc) == -1then//跳到大于等于候選文檔號(hào)

        18. 刪除I[i], 更新accScores[], numTerms--;

        19.elseifIi.doc == canddocthen//計(jì)算候選文檔分?jǐn)?shù)

        20. score +=I[i].score;

        21.ifscore lt; reqScorethen

        22. continue;

        23.else//候選文檔分?jǐn)?shù)大于閾值

        24. rheap.insert(canddoc, score); //插入結(jié)果堆

        25.ifrheap.minScore()gt;initReqScorethen

        26. reqScore = rheap.minScore(); //當(dāng)結(jié)果堆最小分?jǐn)?shù)大于初始閾值時(shí),更新閾值

        27.whilenumReqTerms gt; 0 and accScores[numReqTerms-1] lt; reqScoredo

        28. numReqTerms--;

        29.returnrheap.result();

        算法2RS-WAND算法

        1.RS-WAND(queryTerms[0...q-1] ,k)

        2. I[]=getIterators[0...q-1], termID[]=getTermID[0...q-1], numTerms=q;

        3. initReqScore=calcThreshold (termID[0...q-1]);

        4. reqScore=initReqScore;

        5. loop:whilenumTermsgt;0do

        6. sort(I[0...numTerms-1]);

        7. tempScore=0,pivot=0;

        8.fori = 0; i lt; numTerms; i=i+1do

        9. tempScore+=I[i].maxScore;

        10.iftmpaccScoregt;=reqScorethen

        11. pivotdoc=I[i].doc;

        12.forj = i-1; j gt;=0; j=j-1do

        13. I[j].skipTo(pivotdoc);

        14.ifI[j].doc() gt; pivotdocthen

        15.continueloop;

        16. canddoc = pivotdoc;

        17. 檢查倒排鏈?zhǔn)欠癖闅v完成,若完成,則刪除對(duì)應(yīng)遍歷器,更新I[],numTerms--;

        18.ifnumTerms==0then

        19.break;

        20. 對(duì)文檔進(jìn)行完全打分,得到文檔分?jǐn)?shù)score;

        21.ifscore lt; reqScorethen

        22.continue;

        23.else//候選文檔分?jǐn)?shù)大于閾值

        24. rheap.insert(canddoc, score); //插入結(jié)果堆

        25.ifrheap.minScore()gt;initReqScorethen

        26. reqScore = rheap.minScore(); //當(dāng)結(jié)果堆最小分?jǐn)?shù)大于初始閾值時(shí),更新閾值

        27.returnrheap.result();

        從上可知,RS-MaxScore算法和RS-WAND算法與原算法最主要的區(qū)別是在進(jìn)行倒排鏈遍歷前,首先提取查詢?cè)~ID,再利用toplists中的靜態(tài)信息調(diào)用calcThreshold ()(見算法3)對(duì)初始閾值進(jìn)行計(jì)算。當(dāng)有新結(jié)果插入堆后,需要判斷堆的最小分?jǐn)?shù)是否大于初始閾值,否則不更新堆的當(dāng)前閾值。

        算法3 calcThreshold (termID[])

        4 實(shí)驗(yàn)結(jié)果與分析

        4.1 實(shí)驗(yàn)環(huán)境

        本文使用未壓縮的TREC GOV2數(shù)據(jù)集作為測(cè)試集,它包含2 500萬個(gè)網(wǎng)頁,數(shù)據(jù)規(guī)模為426GB。查詢語句從Terabyte Track 05 Efficiency查詢集中按需求隨機(jī)選取1 000條,作為實(shí)驗(yàn)查詢輸入。索引采用與文獻(xiàn)[11]相類似的多層自索引結(jié)構(gòu),能夠?qū)Φ古沛溸M(jìn)行隨機(jī)訪問。其中,每128個(gè)文檔號(hào)和詞頻為一個(gè)塊進(jìn)行壓縮,壓縮算法為NewPFD。系統(tǒng)檢索模型為Okapi BM25。

        系統(tǒng)由Java實(shí)現(xiàn),JDK版本為1.7。測(cè)試平臺(tái)硬件配置為: IntelI CoreI i5處理器,3.20 GHz主頻,12 GB內(nèi)存。

        4.2 實(shí)驗(yàn)結(jié)果與分析

        4.2.1 性能指標(biāo)

        表1至表3分別展示了RS-MaxScore與RS-WAND算法在不同k值和查詢?cè)~長(zhǎng)度下,插入堆文檔數(shù)(Heap inserted)、文檔打分次數(shù)(Documents scored)、讀入磁盤數(shù)據(jù)塊數(shù)量(Blocks read)三項(xiàng)主要性能指標(biāo),以及與原算法相比取得的性能提升。其中,L表示查詢?cè)~長(zhǎng)度,%I表示性能提升的百分比,H表示每個(gè)查詢插入堆的平均文檔數(shù),D表示每個(gè)查詢平均打分次數(shù),B表示每個(gè)查詢平均讀入磁盤數(shù)據(jù)塊數(shù)量。

        從表1可以看出,RS-MaxScore與RS-WAND算法能夠有效減少查詢處理時(shí)插入堆的文檔數(shù),這得益于非零初始閾值的“過濾”效果。當(dāng)k固定時(shí),減少文檔數(shù)的效果隨著L的增大而降低。這是因?yàn)長(zhǎng)的增大將導(dǎo)致初始閾值計(jì)算階段估算的文檔增多,使得到的閾值更加偏離最優(yōu)解。而當(dāng)L固定時(shí),減少文檔數(shù)的效果隨著k的增大而提升。這是由于在原算法中,k值越大,查詞處理初始階段進(jìn)入堆的無效文檔越多,使得改進(jìn)的算法“過濾”的文檔相對(duì)更多。從表2可以看到,在文檔打分次數(shù)方面,RS-MaxScore與RS-WAND算法有一定的提升,通過避免對(duì)部分文檔完全打分加快了查詢處理過程。同時(shí)應(yīng)該看到,表3指出在大部分情況下,讀入磁盤數(shù)據(jù)塊的數(shù)量在算法改進(jìn)后略微減少,這是因?yàn)樘岢龅膬煞N算法仍需對(duì)可能進(jìn)入結(jié)果堆的文檔進(jìn)行部分打分評(píng)估,從而在讀磁盤操作上并不會(huì)有明顯提升。

        表1 RS-MaxScore與RS-WAND算法的插入堆文檔數(shù)(H)及其性能提升(%I)

        注:L為查詢?cè)~長(zhǎng)度

        表2 RS-MaxScore與RS-WAND算法的文檔打分次數(shù)(D)及其性能提升(%I)

        注: L為查詢?cè)~長(zhǎng)度

        表3 RS-MaxScore與RS-WAND算法讀入磁盤數(shù)據(jù)塊的數(shù)量(D)及其性能提升(%I)

        注:L為查詢?cè)~長(zhǎng)度

        4.2.2 不同k值對(duì)查詢執(zhí)行時(shí)間的影響

        圖3展示了在不同k值下,MaxScore、RS-MaxScore及RSM-Opt(optimal rapid start MaxScore)三種算法的執(zhí)行時(shí)間,其中查詢?cè)~長(zhǎng)度采用隨機(jī)選取的方式。RSM-Opt是指初始閾值設(shè)置為最優(yōu)解的快速啟動(dòng)算法,在預(yù)處理階段對(duì)固定查詢集進(jìn)行第一次處理,記錄每條查詢結(jié)果集的最小分?jǐn)?shù)后,在正式查詢階段使用記錄好的分?jǐn)?shù)作為初始閾值,并使用MaxScore算法對(duì)相同查詢集進(jìn)行第二次處理。該算法不具有實(shí)際應(yīng)用意義,但其查詢執(zhí)行時(shí)間在理論上為基于閾值計(jì)算的改進(jìn)方式,能夠達(dá)到的最短時(shí)間,具有參照價(jià)值。當(dāng)k=1時(shí),RS-MaxScore與RSM-Opt的初始閾值相同,但由于前者需要對(duì)初始閾值進(jìn)行計(jì)算,故查詢執(zhí)行時(shí)間略長(zhǎng)于后者。當(dāng)k增大時(shí),三種算法執(zhí)行時(shí)間都隨之增長(zhǎng),這是因?yàn)榉祷亟Y(jié)果數(shù)量的增加意味著結(jié)果集文檔得分閾值的下降,使得評(píng)估文檔數(shù)增多。在k分別為10、20、50時(shí),RS-MaxScore對(duì)原算法的速度提升分別為15.6%、21%、16.7%。

        圖3 不同k值下MaxScore、RS-MaxScore和RSM-Opt的 平均查詢執(zhí)行時(shí)間

        圖4展示了在不同k值下,WAND、RS-WAND及RSW-Opt(optimal rapid start WAND)三種算法的執(zhí)行時(shí)間。與RSM-Opt相似,RSW-Opt也是初始閾值設(shè)置為最優(yōu)解的快速啟動(dòng)算法,具有參考價(jià)值,所不同的是其正式查詢階段使用的是WAND算法??梢钥吹?,與圖1相比RS-WAND的時(shí)間折線更接近于原算法,說明快速啟動(dòng)的策略對(duì)MaxScore來說更加有效,這可能是因?yàn)镸axScore在查詢過程中并不改變?cè)~項(xiàng)鏈表順序,非零初始閾值能夠有效地劃分必要鏈表和非必要鏈表,使算法性能提升更高。但即使如此,RS-WAND對(duì)原算法的速度提升也在5%~8%之間。

        圖4 不同k值下WAND、RS-WAND和RSW-Opt的 平均查詢執(zhí)行時(shí)間

        4.2.3 不同查詢?cè)~長(zhǎng)度對(duì)查詢執(zhí)行時(shí)間的影響

        圖5展示了在不同查詢?cè)~長(zhǎng)度下各算法的查詢執(zhí)行時(shí)間,其中k=50。從圖中可以看出,MaxScore的執(zhí)行時(shí)間低于WAND,且RS-MaxScore的執(zhí)行時(shí)間低于RS-WAND。隨著查詢?cè)~長(zhǎng)度L增大,四種算法的執(zhí)行時(shí)間都基本呈增長(zhǎng)的趨勢(shì)。無論L取值多少,RS-MaxScore和RS-WAND的執(zhí)行時(shí)間都比原算法少并都在L=5時(shí)取得最佳的效率,分別為20.6%和11.8%。

        圖5 不同查詢?cè)~長(zhǎng)度下各算法的平均查詢執(zhí)行時(shí)間

        5 結(jié)束語

        本文針對(duì)Top-k查詢算法的慢啟動(dòng)問題,對(duì)每個(gè)查詢?cè)~倒排鏈的Top-k文檔進(jìn)行提取,以此為依據(jù)對(duì)算法的初始閾值進(jìn)行估算,結(jié)合現(xiàn)有的MaxScore和WAND算法,在保證安全性的前提下提出了RS-MaxScore和RS-WAND算法,實(shí)驗(yàn)證明,所提方案具有良好的性能。

        未來將會(huì)在現(xiàn)有工作上進(jìn)行更多的優(yōu)化: 進(jìn)一步探索在估算閾值階段,合并后的文檔數(shù)量與原文檔數(shù)量的比值,估算閾值與最優(yōu)閾值的比值之間的關(guān)系,嘗試建立數(shù)學(xué)模型,從而方便有效地使初始閾值更接近于最優(yōu)閾值。

        [1] Turtle H, Flood J. Query evaluation: strategies andoptimizations[J]. Information Processing amp; Management, 1995, 31(6): 831-850.

        [2] Broder A Z, Carmel D,Herscovici M, et al. Efficient query evaluation using a two-level retrieval process[C]// Proceedings of the 12th International Conference on Information and Knowledge Management. ACM, 2003: 426-434.

        [3] Moffat A,Zobel J. Self-indexing inverted files for fast text retrieval[J]. ACM Transactions on Information Systems (TOIS), 1996, 14(4): 349-379.

        [4] Jonassen S, Bratsberg S E. Efficient compressed inverted index skipping for disjunctive text-queries[M]. Advances in Information Retrieval. Springer Berlin Heidelberg, 2011: 530-542.

        [5] Yan H, Ding S,Suel T. Inverted index compression and query processing with optimized document ordering[C]//Proceedings of the 18th International Conference on World Wide Web. ACM, 2009: 401-410.

        [6] Ricardo B Y, Berthier R N. Modern information retrieval: the concepts and technology behind search (2nd Edition)[M]. Addision Wesley, 2011, 84: 2.

        [7] Strohman T, Turtle H, Croft W B. Optimization strategies for complex queries[C]//Proceedings of the 28th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. ACM, 2005: 219-225.

        [8] Rossi C, de Moura E S,Carvalho A L, et al. Fast document-at-a-time query processing using two-tier indexes[C]//Proceedings of the 36th International ACM SIGIR Conference on Research and Development in Information Retrieval. ACM, 2013: 183-192.

        [9] Ding S,Suel T. Faster Top-k document retrieval using block-max indexes[C]//Proceedings of the 34th International ACM SIGIR Conference on Research and Development in Information Retrieval. ACM, 2011: 993-1002.

        [10] de Carvalho L L S, de Moura E S, Daoud C M, et al. Heuristics to improve the BMW method and its variants[J]. Journal of Information and Data Management, 2016, 6(3): 178.

        [11] Jonassen S, Bratsberg S E. Efficient compressed inverted index skipping for disjunctive text-queries[M]. Advances in Information Retrieval. Springer Berlin Heidelberg, 2011: 530-542.

        江宇(1987—),碩士,工程師,主要研究領(lǐng)域?yàn)樾畔z索。

        E-mail: jiangyu1406@163.com

        宋省身(1990—),博士研究生,主要研究領(lǐng)域?yàn)樾畔z索。

        E-mail: songxingshen@nudt.edu.cn

        楊岳湘(1967—),博士,研究員,主要研究領(lǐng)域?yàn)樾畔z索。

        E-mail: yyx@nudt.edu.cn

        RapidStartTop-kQueryBasedonThreshold

        JIANG Yu1,2, SONG Xingshen2, YANG Yuexiang3, JIANG Kun4

        (1. Northwest Institute of Nuclear Technology, Xi’an, Shaanxi 710024, China;2. College of Computer, National University of Defense Technology, Changsha, Hunan 410073, China;3. Information Center, National University of Defense Technology, Changsha, Hunan 410073, China;4. School of Electronic and Information Engineering,Xi’an Jiaotong University, Xi’an, Shaanxi 710049, China)

        Top-k query is a popular technique of search engines, which returns the most relative results for user from massive data. Although Top-k query significantly improves the performance of the system, its slow-start issue has not been effectively resolved. This paper extracts static Top-k information of inverted index and then calculats initial threshold in real time for specific query. On this basis, this paper presents a rapid start algorithm of Top-k query for the current state-of-art methods MaxScore and WAND. Experimental results show that the proposed approach achieves better performance.

        Top-k query; threshold-calculation; inverted index

        1003-0077(2017)05-0163-08

        TP391

        A

        2016-08-16定稿日期2016-12-26

        湖南省自然科學(xué)基金(2016JJ2007)

        猜你喜歡
        鏈表支點(diǎn)文檔
        有人一聲不吭向你扔了個(gè)文檔
        讓“預(yù)習(xí)單”成為撬動(dòng)教與學(xué)的支點(diǎn)
        基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
        跟麥咭學(xué)編程
        基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
        基于RI碼計(jì)算的Word復(fù)制文檔鑒別
        給自己一個(gè)支點(diǎn)
        快樂語文(2016年7期)2016-11-07 09:43:55
        找到撬動(dòng)變革的支點(diǎn)
        Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
        鏈表方式集中器抄表的設(shè)計(jì)
        成人免费视频在线观看| 羞羞色院99精品全部免| 亚洲精品无码不卡| 欧美最大胆的西西人体44| chinesefreexxxx国产麻豆| 麻豆人妻无码性色AV专区| 日韩一级137片内射视频播放| 九九影院理论片私人影院| 老熟妇乱子伦av| 免费看欧美日韩一区二区三区| 精品奇米国产一区二区三区| 2021国产精品视频网站| 黄色a级国产免费大片| 无夜精品久久久久久| 亚洲精品中文字幕乱码3| 亚洲欧洲av综合色无码| 337人体做爰大胆视频| 亚洲中文欧美日韩在线| 国产极品大秀在线性色| 五月天国产成人av免费观看| 国内精品久久久久久久影视麻豆| 粉嫩小泬无遮挡久久久久久 | 国产亚洲精品国看不卡| 久久精品熟女亚洲av香蕉| 亚洲日韩av无码一区二区三区人| 免费现黄频在线观看国产 | 最好的99精品色视频大全在线| 国产精品丝袜一区二区三区在线 | 国产一级在线现免费观看| 我的极品小姨在线观看| 久久久久99精品成人片| 日本午夜免费福利视频| 亚洲AV成人无码天堂| 人妻一区二区三区在线看| 久久香蕉国产线看观看精品yw| 国产精品刺激好大好爽视频| 男女男生精精品视频网站| 天堂资源中文网| 免费人成视频x8x8| 麻豆成年视频在线观看| 91色老久久偷偷精品蜜臀懂色 |