亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種用于搜索引擎的緩存方法和設(shè)備的制作方法

文檔序號:6502929閱讀:199來源:國知局
一種用于搜索引擎的緩存方法和設(shè)備的制作方法
【專利摘要】本申請?zhí)岢隽艘环N用于搜索引擎的緩存方法和設(shè)備。所述方法包括步驟:接收查詢及根據(jù)查詢得到的元素;基于所述查詢,生成查詢的鍵值;在緩存中找到該鍵值對應(yīng)的列表;對元素進(jìn)行打分并保存;以及更新緩存。本申請的技術(shù)方案通過緩存每個元素的分值及其狀態(tài)信息,減少了MLR的調(diào)用次數(shù),從而降低了引擎的計算量,提高了其時效。本申請還通過細(xì)化每個查詢的組成并對查詢進(jìn)行歸一化,來提高緩存的命中率。
【專利說明】一種用于搜索引擎的緩存方法和設(shè)備

【技術(shù)領(lǐng)域】
[0001]本申請涉及搜索引擎領(lǐng)域,尤其涉及一種用于搜索引擎的緩存方法和設(shè)備。

【背景技術(shù)】
[0002]搜索引擎是指根據(jù)一定的策略、運用特定的計算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),并將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。
[0003]隨著一個搜索引擎的發(fā)展壯大,其數(shù)據(jù)的量也越來越多,業(yè)務(wù)要求也越來越復(fù)雜。相應(yīng)的,引擎的計算模塊,S卩:機(jī)器學(xué)習(xí)排列模塊(Machine Learning Ranking,MLR)也越來越復(fù)雜。該計算模塊往往涉及各種算法模型,需要大量的計算量,需要消耗大量的服務(wù)器的(PU資源,其性能問題日益凸顯。
[0004]這里所說的數(shù)據(jù)也叫做被檢索的元素(document),對應(yīng)在一個實際引擎中,元素有可能為網(wǎng)頁、商品等基礎(chǔ)單兀。
[0005]因此,為了提高查詢的效率,減少計算量,現(xiàn)有的搜索引擎會將用戶的一次訪問結(jié)果,緩存起來,等到相同的訪問再次到來時,就直接從緩存中找到相應(yīng)的結(jié)果,返回給用戶,從而減少引擎的壓力,提高響應(yīng)時間。
[0006]但這種方法的緩存命中率相對較低,用戶稍微改變一下查詢的組成,就命中不了。另外,這種緩存方式會犧牲一定的時效性,命中緩存的結(jié)果和真實情況存在一定的差距。


【發(fā)明內(nèi)容】

[0007]本申請的主要目的在于提供一種新的用于搜索引擎的緩存的技術(shù)方案,以解決現(xiàn)有技術(shù)存在的上述問題,其中:
[0008]根據(jù)本申請的第一方面,提供了一種用于搜索引擎的緩存方法,包括步驟:接收查詢及根據(jù)查詢得到的元素;基于所述查詢,生成查詢的鍵值;在緩存中找到該鍵值對應(yīng)的列表;對元素進(jìn)行打分并保存;以及更新緩存。
[0009]根據(jù)本申請的第二方面,提供了一種用于搜索引擎的緩存設(shè)備,包括:接收裝置,用于接收查詢及根據(jù)查詢得到的元素;生成裝置,用于基于所述查詢生成查詢的鍵值;查找裝置,用于在緩存中找到該鍵值對應(yīng)的列表;打分裝置,用于對所述元素進(jìn)行打分并保存;以及更新裝置,用于更新緩存。
[0010]與現(xiàn)有技術(shù)相比,本申請的技術(shù)方案通過緩存每個元素的分值及其狀態(tài)信息,減少了 MLR的調(diào)用次數(shù),從而降低了引擎的計算量,提高了其時效。本申請還通過細(xì)化每個查詢的組成并對查詢進(jìn)行歸一化,來提高緩存的命中率。

【專利附圖】

【附圖說明】
[0011]此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
[0012]圖1示意性地示出了本申請?zhí)岢龅挠糜谒阉饕娴木彺娣椒ǖ目傮w流程圖;
[0013]圖2示意性地示出了根據(jù)本申請一個實施例的緩存中的數(shù)據(jù)結(jié)構(gòu)示意圖;
[0014]圖3示意性地示出了根據(jù)本申請一個實施例的對元素進(jìn)行打分并保存步驟的具體流程圖;
[0015]圖4是舉例說明本申請方法技術(shù)效果的示意圖;
[0016]圖5示意性地示出了根據(jù)本申請一個實施例的用于搜索引擎的緩存設(shè)備的結(jié)構(gòu)框圖。
[0017]在這些附圖中,使用相同的參考標(biāo)號來表示相同或相似的部分。

【具體實施方式】
[0018]為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖及具體實施例,對本申請作進(jìn)一步地詳細(xì)說明。
[0019]在一個典型的配置中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
[0020]內(nèi)存可能包括計算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機(jī)可讀介質(zhì)的示例。
[0021]計算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM)、其他類型的隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
[0022]在以下描述中,對“ 一個實施例”、“實施例”、“ 一個示例”、“示例”等等的引用表明如此描述的實施例或示例可以包括特定特征、結(jié)構(gòu)、特性、性質(zhì)、元素或限度,但并非每個實施例或示例都必然包括特定特征、結(jié)構(gòu)、特性、性質(zhì)、元素或限度。另外,重復(fù)使用短語“根據(jù)本申請的一個實施例”雖然有可能是指代相同實施例,但并非必然指代相同實施例。
[0023]為簡單起見,以下描述中省略了本領(lǐng)域技術(shù)人員公知的某些技術(shù)特征。
[0024]圖1示意性地示出了本申請?zhí)岢龅挠糜谒阉饕娴木彺娣椒?00的總體流程圖。
[0025]在步驟101中,接收查詢及根據(jù)查詢得到的元素。這里所說的查詢(query),指的是已經(jīng)經(jīng)過一定的算法意圖識別后的查詢(query),用于區(qū)分不同用戶的需求。這里所說的元素(document)是搜索引擎根據(jù)查詢找到的與該查詢相關(guān)的元素。
[0026]在步驟102中,基于所述查詢,生成查詢的鍵值。具體來說,步驟102進(jìn)一步包括如下步驟:
[0027]對查詢進(jìn)行細(xì)化。通過加載預(yù)先設(shè)定的配置來識別出與打分相關(guān)的參數(shù),該配置中包含有跟打分相關(guān)的參數(shù)名。例如,有如下三個查詢分別是:
[0028]Queryl:keyword = mp3&addr = Bei jing&tab = pop&stat = cat
[0029]Query2:tab = normal&keyword = MP3&addr = Hangzhou&stat = attr
[0030]Query3:tab = pop&keyword = mP3
[0031]其中,keyword表示查詢的詞,addr表示過濾的地址,tab表示正常搜索或人氣搜索,stat表示統(tǒng)計項。
[0032]預(yù)先設(shè)定的配置中的參數(shù)是keyword, tab。這個例子里,keyword, tab可以作為與打分相關(guān)的參數(shù)。
[0033]則對這三個查詢細(xì)化以后得到:
[0034]Queryl:keyword = mp3&tab = pop
[0035]Query2:tab = normal&keyword = MP3
[0036]Query3:tab = pop&keyword = mP3
[0037]將細(xì)化得到的參數(shù)經(jīng)過大小寫轉(zhuǎn)換、排序后,拼成一個新的查詢,S卩:歸一化。針對上面三個細(xì)化后的查詢,歸一化以后的新的查詢是:
[0038]Queryl:keyword = mp3&tab = pop
[0039]Query2:keyword = mp3&tab = normal
[0040]Query3:keyword = mp3&tab = pop
[0041]最后給新的查詢簽名,生成一個緩存鍵值(cache key)。簽名的算法有很多種,這里采用MD5算法簽名以后,得到的各個查詢的緩存鍵值如下:
[0042]Queryl:8c2a5244cd5e650b9cb259de4351a887
[0043]Query2:e9aee0a751b60863f67a80b3b9f323b8
[0044]Query3:8c2a5244cd5e650b9cb259de4351a887
[0045]通過以上細(xì)化查詢的組成并歸一化查詢的步驟,能夠提高緩存的命中率。
[0046]在步驟103中,在緩存中找到該鍵值對應(yīng)的列表。圖2示意性地示出了根據(jù)本申請一個實施例的緩存中的數(shù)據(jù)結(jié)構(gòu)示意圖,結(jié)合圖2可以看出,本申請的緩存中被查詢的數(shù)據(jù)的存儲結(jié)構(gòu)采用兩級索引的方式。在緩存200中,一次用戶查詢可以只對應(yīng)一個鍵值201,通過該鍵值201可以找到一個項目的列表202,列表202中包含多個項目203、204,每一個項目包括兀素標(biāo)識號、兀素分值和狀態(tài)信息。標(biāo)識號是一個兀素的唯一標(biāo)號,兀素分值為機(jī)器學(xué)習(xí)排列模塊(MLR)對該元素的打分值,狀態(tài)信息為給該元素打分當(dāng)時的一些狀態(tài)。狀態(tài)信息可以概括為兩方面的信息:一是元素的狀態(tài),可以理解為進(jìn)入緩存當(dāng)時元素的更新時間;二是項目的信息,可以理解為該項目被放入緩存的時間。每個列表能夠保存的項目的數(shù)量具有上限。根據(jù)本發(fā)明的一個實施例,每個元素中都會有一個時間戳,記錄元素更新的時間,如果某個元素在時間點tl被更新了,之后都沒更新,在時間點t2,有查詢命中了這個元素,tl就是進(jìn)入緩存當(dāng)時元素的更新時間,t2就是該元素對應(yīng)的項目被放入緩存的時間。因此,該項目的狀態(tài)信息就可以存儲成(tl, t2)。
[0047]在步驟104中,對元素進(jìn)行打分并保存。圖3示意性地示出了根據(jù)本申請一個實施例的對元素進(jìn)行打分并保存步驟的具體流程圖,結(jié)合圖3,步驟104可以進(jìn)一步包括以下步驟 301-303。
[0048]在步驟301中,判斷該元素是否在該項目列表中。如果該元素在列表中,則方法進(jìn)入步驟302,否則轉(zhuǎn)到步驟303。
[0049]在步驟302中,檢查所述元素的分值是否有效。如果有效,則不對該元素重新打分,即:保持該元素的原有分值不變,圖3的方法直接結(jié)束,否則進(jìn)入步驟303。根據(jù)本發(fā)明的一個實施例,假設(shè)在時間點t3有一次訪問命中了上述的項目狀態(tài)信息為(tl,t2)的元素,則進(jìn)行如下兩項檢查:
[0050]I)先檢查元素更新的時間和項目中的元素狀態(tài)信息,發(fā)現(xiàn)都是tl,則表示從tl到t3這段時間內(nèi)元素沒被更新;
[0051 ] 2)檢查項目狀態(tài)信息中的時間點t2和時間點t3之間的間隔是否超過了預(yù)先設(shè)定的閾值,如果沒有超過,就認(rèn)為該項目有效。
[0052]如果從tl到t3這段時間內(nèi)元素沒被更新且該項目有效,就認(rèn)為該元素的分值是有效的。
[0053]在步驟303中,調(diào)用機(jī)器學(xué)習(xí)排列模塊(MLR)對該元素重新打分、保存分值。然后,圖3中的方法結(jié)束。
[0054]需要說明的是,對于上述的根據(jù)查詢得到的元素,都可以按照這里的步驟進(jìn)行判斷、打分并保存結(jié)果。
[0055]由圖3所示的步驟流程可以看出,本申請在對元素進(jìn)行打分的時候,只會針對那些當(dāng)前不在項目列表中元素,或者是狀態(tài)信息為無效的元素,對于在項目列表中且狀態(tài)信息有效的元素,將不會調(diào)用消耗CPU資源的MLR模塊對其進(jìn)行打分。這樣就減少了 MLR模塊的被調(diào)用次數(shù),降低了 CPU負(fù)荷,提高了響應(yīng)速度。
[0056]在步驟105中,更新緩存。步驟105進(jìn)一步包括:
[0057]更新元素的狀態(tài)信息。對于重新打分的項目,就需要將其狀態(tài)信息也進(jìn)行相應(yīng)的更新并保存。
[0058]按照該列表最大能夠保存的項目的數(shù)量的上限值保留列表中元素分值高的項目。由于項目列表下面的元素數(shù)量眾多,不可能將所有的元素都存在緩存中,因此,需要根據(jù)最新的打分信息和該上限值,將分值較高的元素保留在該列表中,而將分值較低的元素移出列表。比如:如果該上限值是100,則只保留分值從高到低的前100個元素,而將其他的元素移出該列表。
[0059]按照最近最少使用規(guī)則(LRU)決定列表是否保留在緩存中。在完成相應(yīng)列表內(nèi)項目的更新以后,根據(jù)最近最少使用規(guī)則(LRU),將最近最少使用的列表移出緩存。
[0060]圖4是舉例說明本申請方法技術(shù)效果的示意圖,下面結(jié)合圖4舉例說明本申請方法的技術(shù)效果。
[0061]圖中的query =手機(jī)表示用戶的查詢?yōu)椤笆謾C(jī)”,doc I和doc2為根據(jù)查詢得到的的兩個元素,doc I和doc2后面所跟的數(shù)字(900、1000、1100)為該元素的當(dāng)前分值。
[0062]如圖4A所示,當(dāng)用戶第一次查詢“手機(jī)”時,通過調(diào)用計算模塊MLR來得到docl和doc2的分值,將其緩存起來,并將計算結(jié)果返回給用戶。這次查詢調(diào)用MLR的次數(shù)為兩次。
[0063]如圖4B所示,當(dāng)用戶第二次查詢“手機(jī)”時,不需要調(diào)用計算模塊MLR來得到docl和doc2的分值,直接將其從緩存中讀出,并將其返回給用戶。這次查詢沒有調(diào)用MLR。
[0064]如圖4C所示,在用戶第二次查詢“手機(jī)”之后,第三次查詢“手機(jī)”之前,如果外部模塊更新了 doc2的內(nèi)容,由于還沒有再次的“手機(jī)”查詢到來,本申請的緩存方法將不會調(diào)用計算模塊MLR來重新計算doc2的分值。也就是說,doc2的變化不會馬上反應(yīng)到緩存中去。即是說:在下次查詢到來之前,即便最近一次查詢對應(yīng)的元素的內(nèi)容發(fā)生了更新改變,本申請方法也會保持該元素的分值不變。
[0065]如圖4D所示,在外部模塊更新了 doc2的內(nèi)容之后,如果用戶再次查詢“手機(jī)”,緩存通過判斷doc2的狀態(tài)信息會發(fā)現(xiàn)doc2被更新過,則需要調(diào)用計算模塊MLR來重新計算并保存其分值,而docl的狀態(tài)信息沒有發(fā)生變化且還存在于項目列表之中,將不會調(diào)用計算模塊MLR來重新計算其分值,只需要直接將其返回給用戶。因此,對于這次的用戶查詢而言,只調(diào)用了一次計算模塊MLR,節(jié)省了一次的計算量。
[0066]本申請還提供了一種用于搜索引擎的緩存設(shè)備。圖5示意性地示出了根據(jù)本申請一個實施例的用于搜索引擎的緩存設(shè)備500的結(jié)構(gòu)框圖。根據(jù)本申請的一個實施例,設(shè)備500可以包括:接收裝置501,用于接收查詢及根據(jù)查詢得到的元素,生成裝置502,用于基于查詢生成查詢的鍵值;查找裝置503,用于在緩存中找到該鍵值對應(yīng)的列表;打分裝置504,用于對所述元素進(jìn)行打分并保存;更新裝置505,用于更新緩存。
[0067]根據(jù)本申請的一個實施例,生成裝置502可以進(jìn)一步包括:過濾裝置,用于通過加載預(yù)先設(shè)定的配置來過濾出查詢中與打分相關(guān)的參數(shù);拼接裝置,用于將所有與打分相關(guān)的參數(shù)拼成新的查詢;簽名裝置,用于對新的查詢簽名來生成其鍵值。
[0068]根據(jù)本申請的另一實施例,打分裝置504可以進(jìn)一步包括:元素位置檢查裝置,用于檢查所述元素是否在所述列表中;以及第一重新打分裝置,用于對不在所述列表中的所述元素重新打分并保存;分值有效性檢查裝置,用于檢查所述元素的分值是否有效;以及第二重新打分裝置,用于對分值無效的元素重新打分并保存。
[0069]根據(jù)本申請的一個實施例,列表包含多個項目,項目包括元素標(biāo)識號、元素分值和狀態(tài)信息。
[0070]根據(jù)本申請的一個實施例,列表能夠保存的項目的數(shù)量具有上限。
[0071 ] 根據(jù)本申請的又一實施例,更新裝置505可以進(jìn)一步包括:狀態(tài)更新裝置,用于更新元素的狀態(tài)信息;元素保留裝置,用于按照上限保留列表中元素分值高的項目;列表保留裝置,用于按照最近最少使用規(guī)則決定列表是否保留在緩存中。
[0072]根據(jù)本申請的一個實施例,在下次查詢到來之前,保持本次查詢得到的元素的分值不變。
[0073]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
[0074]以上所述僅為本申請的實施例而已,并不用于限制本申請,對于本領(lǐng)域的技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。
【權(quán)利要求】
1.一種用于搜索引擎的緩存方法,其特征在于包括步驟: 接收查詢及根據(jù)查詢得到的元素; 基于所述查詢,生成查詢的鍵值; 在緩存中找到該鍵值對應(yīng)的列表; 對元素進(jìn)行打分并保存;以及 更新緩存。
2.根據(jù)權(quán)利要求1所述的用于搜索引擎的緩存方法,其特征在于,所述生成查詢的鍵值的步驟進(jìn)一步包括: 通過加載預(yù)先設(shè)定的配置來過濾出查詢中與打分相關(guān)的參數(shù); 將所有與打分相關(guān)的參數(shù)拼成新的查詢;以及 對新的查詢簽名來生成其鍵值。
3.根據(jù)權(quán)利要求1所述的用于搜索引擎的緩存方法,其特征在于,所述對元素進(jìn)行打分并保存的步驟進(jìn)一步包括: 檢查所述元素是否在所述列表中;以及 對不在所述列表中的所述元素重新打分并保存; 檢查所述元素的分值是否有效;以及 對分值無效的元素重新打分并保存。
4.根據(jù)權(quán)利要求1-3中任一項所述的用于搜索引擎的緩存方法,其特征在于:所述列表包含多個項目,所述項目包括所述元素標(biāo)識號、元素分值和狀態(tài)信息。
5.根據(jù)權(quán)利要求4所述的用于搜索引擎的緩存方法,其特征在于:所述列表能夠保存的項目的數(shù)量具有上限。
6.根據(jù)權(quán)利要求5所述的用于搜索引擎的緩存方法,其特征在于,所述更新緩存步驟進(jìn)一步包括: 更新元素的狀態(tài)信息; 按照所述上限保留列表中元素分值高的項目;以及 按照最近最少使用規(guī)則決定所述列表是否保留在緩存中。
7.根據(jù)權(quán)利要求1所述的用于搜索引擎的緩存方法,其特征在于:在下次查詢到來之前,保持本次查詢得到的元素的分值不變。
8.一種用于搜索引擎的緩存設(shè)備,其特征在于包括: 接收裝置,用于接收查詢及根據(jù)查詢得到的元素; 生成裝置,用于基于所述查詢生成查詢的鍵值; 查找裝置,用于在緩存中找到該鍵值對應(yīng)的列表; 打分裝置,用于對所述元素進(jìn)行打分并保存;以及 更新裝置,用于更新緩存。
9.根據(jù)權(quán)利要求8所述的用于搜索引擎的緩存設(shè)備,其特征在于,所述生成裝置進(jìn)一步包括: 過濾裝置,用于通過加載預(yù)先設(shè)定的配置來過濾出查詢中與打分相關(guān)的參數(shù); 拼接裝置,用于將所有與打分相關(guān)的參數(shù)拼成新的查詢;以及 簽名裝置,用于對新的查詢簽名來生成其鍵值。
10.根據(jù)權(quán)利要求8所述的用于搜索引擎的緩存設(shè)備,其特征在于,所述打分裝置進(jìn)一步包括: 元素位置檢查裝置,用于檢查所述元素是否在所述列表中;以及 第一重新打分裝置,用于對不在所述列表中的所述元素重新打分并保存; 分值有效性檢查裝置,用于檢查所述元素的分值是否有效;以及 第二重新打分裝置,用于對分值無效的元素重新打分并保存。
11.根據(jù)權(quán)利要求8-10中任一項所述的用于搜索引擎的緩存設(shè)備,其特征在于:所述列表包含多個項目,所述項目包括所述元素標(biāo)識號、元素分值和狀態(tài)信息。
12.根據(jù)權(quán)利要求11所述的用于搜索引擎的緩存設(shè)備,其特征在于:所述列表能夠保存的項目的數(shù)量具有上限。
13.根據(jù)權(quán)利要求12所述的用于搜索引擎的緩存設(shè)備,其特征在于,所述更新裝置進(jìn)一步包括: 狀態(tài)更新裝置,用于更新元素的狀態(tài)信息; 元素保留裝置,用于按照所述上限保留列表中元素分值高的項目;以及 列表保留裝置,用于按照最近最少使用規(guī)則決定所述列表是否保留在緩存中。
14.根據(jù)權(quán)利要求8所述的用于搜索引擎的緩存設(shè)備,其特征在于:在下次查詢到來之前,保持本次查詢得到的元素的分值不變。
【文檔編號】G06F17/30GK104166649SQ201310182204
【公開日】2014年11月26日 申請日期:2013年5月16日 優(yōu)先權(quán)日:2013年5月16日
【發(fā)明者】宋華青 申請人:阿里巴巴集團(tuán)控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1