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

一種代碼搜索方法和系統(tǒng)與流程

文檔序號(hào):12364408閱讀:488來(lái)源:國(guó)知局
一種代碼搜索方法和系統(tǒng)與流程

本申請(qǐng)大體涉及搜索領(lǐng)域,尤其是針對(duì)代碼領(lǐng)域的搜索方法和系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)的興起,通用搜索引擎為大家所熟知,能夠提供各類(lèi)的相關(guān)信息。而基于滿足特定行業(yè)人群的需求,出現(xiàn)了垂直搜索引擎。垂直搜索引擎為用戶提供的是范圍極為縮小、極具針對(duì)性的具體信息,服務(wù)于特定的人群,例如新聞搜索、圖片搜索、旅游類(lèi)的搜索、音樂(lè)搜索等。

但是服務(wù)于軟件開(kāi)發(fā)相關(guān)用戶的、針對(duì)代碼領(lǐng)域的垂直搜索引擎還沒(méi)有進(jìn)行精細(xì)化處理。代碼領(lǐng)域的垂直搜索引擎必須針對(duì)軟件開(kāi)發(fā)領(lǐng)域、編程語(yǔ)言、代碼等特點(diǎn),其中數(shù)據(jù)處理的算法模型需要綜合考慮代碼領(lǐng)域的特征。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本申請(qǐng)的實(shí)施例希望提供一種用于針對(duì)代碼領(lǐng)域的垂直搜索引擎的方法以及垂直搜索引擎。

本申請(qǐng)實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:

本發(fā)明提供一種代碼搜索方法和系統(tǒng)。該方法包括:基于用戶輸入的搜索詞對(duì)代碼進(jìn)行一次搜索;對(duì)通過(guò)一次搜索得到的結(jié)果集進(jìn)行二次排序;將經(jīng)過(guò)二次排序的所述結(jié)果集作為搜索結(jié)果返回給所述用戶,其中所述二次排序包括根據(jù)通過(guò)以下處理中的一個(gè)或多個(gè)而得到的分?jǐn)?shù)對(duì)所述結(jié)果集中的結(jié)果進(jìn)行二次排序:對(duì)通過(guò)一次搜索得到的結(jié)果集進(jìn)行相關(guān)性分?jǐn)?shù)計(jì)算以得到所述結(jié)果集中每個(gè)結(jié)果的相關(guān)性分?jǐn)?shù);對(duì)通過(guò)一次搜索得到的結(jié)果集進(jìn)行代碼質(zhì)量分?jǐn)?shù)計(jì)算以得到所述結(jié)果集中每個(gè)結(jié)果的代碼質(zhì)量分?jǐn)?shù);對(duì)通過(guò)一次搜索得到的結(jié)果集進(jìn)行查詢意圖符合度分?jǐn)?shù)計(jì)算以得到所述結(jié)果集中每個(gè)結(jié)果的查詢意圖符合度分?jǐn)?shù);以及對(duì)通過(guò)一次搜索得到的結(jié)果集進(jìn)行用戶反饋分?jǐn)?shù)計(jì)算以得到所述結(jié)果集中每個(gè)結(jié)果的用戶反饋分?jǐn)?shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中根據(jù)分?jǐn)?shù)對(duì)所述結(jié)果集進(jìn)行二次排序進(jìn)一步包括:根據(jù)所述相關(guān)性分?jǐn)?shù)、所述代碼質(zhì)量分?jǐn)?shù)、所述查詢意圖符合度分?jǐn)?shù)和所述用戶反饋分?jǐn)?shù)中的一個(gè)或多個(gè)得到所述結(jié)果集中每個(gè)結(jié)果的二次排序分?jǐn)?shù);根據(jù)每個(gè)結(jié)果的二次排序分?jǐn)?shù)對(duì)所述結(jié)果集中的結(jié)果進(jìn)行二次排序。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中根據(jù)所述相關(guān)性分?jǐn)?shù)、所述代碼質(zhì)量分?jǐn)?shù)、所述查詢意圖符合度分?jǐn)?shù)和所述用戶反饋分?jǐn)?shù)中的一個(gè)或多個(gè)得到所述結(jié)果集中每個(gè)結(jié)果的二次排序分?jǐn)?shù)進(jìn)一步包括:對(duì)所述相關(guān)性分?jǐn)?shù)、所述代碼質(zhì)量分?jǐn)?shù)、所述查詢意圖符合度分?jǐn)?shù)和所述用戶反饋分?jǐn)?shù)中的所述一個(gè)或多個(gè)分別進(jìn)行歸一化;以及根據(jù)歸一化后的所述一個(gè)或多個(gè)分?jǐn)?shù)得到所述結(jié)果集中每個(gè)結(jié)果的二次排序分?jǐn)?shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述相關(guān)性分?jǐn)?shù)計(jì)算包括對(duì)所述結(jié)果集進(jìn)行相關(guān)性分析,通過(guò)以下方式實(shí)現(xiàn):

score_corr=score_orig/logMN,

其中,score_orig是通過(guò)一次搜索得到的所述結(jié)果集中每個(gè)結(jié)果的原始相關(guān)性分?jǐn)?shù);N是所述結(jié)果在通過(guò)一次搜索得到的所述結(jié)果集中的排位數(shù);M是可配置的底數(shù);score_corr是所述結(jié)果的計(jì)算出的所述相關(guān)性分?jǐn)?shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述代碼質(zhì)量分?jǐn)?shù)計(jì)算包括對(duì)所述結(jié)果集進(jìn)行代碼質(zhì)量分析,通過(guò)以下方式實(shí)現(xiàn):

score_qual=score_row*A+score_norm*B+score_func*C,

其中,score_row是通過(guò)一次搜索得到的所述結(jié)果集中每個(gè)結(jié)果的行數(shù)項(xiàng)分?jǐn)?shù);score_norm是所述結(jié)果的書(shū)寫(xiě)規(guī)范分?jǐn)?shù);score_func是所述結(jié)果的功能復(fù)雜度分?jǐn)?shù);A、B和C是預(yù)先配置的權(quán)重系數(shù);score_qual是所述結(jié)果的計(jì)算出的所述代碼質(zhì)量分?jǐn)?shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述查詢意圖符合度分?jǐn)?shù)計(jì)算包括對(duì)結(jié)果集進(jìn)行查詢意圖分析,通過(guò)以下方式實(shí)現(xiàn):

<mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mrow> <mo>(</mo> <mi>&theta;</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>a</mi> <mo>&CenterDot;</mo> <mi>b</mi> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <mi>a</mi> <mo>|</mo> <mo>|</mo> <mo>&times;</mo> <mo>|</mo> <mo>|</mo> <mi>b</mi> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> </mrow>

其中,a是搜索詞映射后的結(jié)果;b是搜索集映射后的結(jié)果;將a和b進(jìn)行余弦相似度計(jì)算;cosθ是該結(jié)果的計(jì)算出的查詢意圖符合度分?jǐn)?shù),值越大代表相似度越高,結(jié)果為1代表完全符合。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述用戶反饋分?jǐn)?shù)計(jì)算包括對(duì)所述結(jié)果集進(jìn)行用戶反饋分析,通過(guò)以下方式實(shí)現(xiàn):

score_feeb=title_cli*E+unfol_cli*F+fulsce_cli*G,

其中,title_cli是通過(guò)一次搜索得到的所述結(jié)果集中每個(gè)結(jié)果的標(biāo)題點(diǎn)擊曝光率;unfol_cli是所述結(jié)果的展開(kāi)點(diǎn)擊曝光率;fulsce_cli是所述結(jié)果的全屏點(diǎn)擊曝光率;E、F和G是預(yù)先配置的權(quán)重系數(shù);score_feeb是所述結(jié)果的計(jì)算出的所述用戶反饋分?jǐn)?shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述代碼質(zhì)量分?jǐn)?shù)的歸一化通過(guò)以下方式實(shí)現(xiàn):

score_norm_qual=(score_qual-min)/(max-min)

其中,score_qual是每個(gè)結(jié)果的代碼質(zhì)量分?jǐn)?shù),min是所述結(jié)果集中所有結(jié)果的代碼質(zhì)量分?jǐn)?shù)中的最小值,max是所述結(jié)果集中所有結(jié)果的代碼質(zhì)量分?jǐn)?shù)中的最大值,score_norm_qual是所述結(jié)果的歸一化的代碼質(zhì)量分?jǐn)?shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述二次排序分?jǐn)?shù)的計(jì)算通過(guò)以下方式實(shí)現(xiàn):

score_sort=score_norm_corr*M+score_norm_qual*N+score_norm_quer*P+score_norm_feeb*Q,

其中,score_norm_corr是每個(gè)結(jié)果的歸一化的相關(guān)性分?jǐn)?shù),score_norm_qual是所述結(jié)果的歸一化的代碼質(zhì)量分?jǐn)?shù),score_norm_quer是所述結(jié)果的歸一化的查詢意圖符合度分?jǐn)?shù),score_norm_feeb是所述結(jié)果的歸一化的用戶反饋分?jǐn)?shù),M、N、P和Q是預(yù)先配置的權(quán)重系數(shù)。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,其中所述權(quán)重系數(shù)通過(guò)以下方式被預(yù)先配置:在測(cè)試環(huán)境中部署代碼搜索服務(wù);整理統(tǒng)一的搜索詞測(cè)試集;根據(jù)測(cè)試集,使用服務(wù)DCG方法評(píng)估結(jié)果;分析搜索效果對(duì)權(quán)重參數(shù)進(jìn)行調(diào)整;再次重復(fù)使用所述服務(wù)DCG方法評(píng)估結(jié)果、對(duì)所述參數(shù)進(jìn)行所述調(diào)整直到效果達(dá)到設(shè)定的閾值。

本申請(qǐng)的實(shí)施例根據(jù)代碼的特點(diǎn),綜合考慮代碼的相關(guān)性、代碼質(zhì)量、用戶查詢意圖以及用戶反饋等因素中的一個(gè)或多個(gè),對(duì)代碼搜索結(jié)果進(jìn)行二次排序,有效地提升了代碼搜索的效果,使得使用者獲得良好的用戶體驗(yàn)。

附圖說(shuō)明

在附圖中(這些附圖不一定是按照比例繪制的),相同的數(shù)字能夠描述不同視圖中的相似部件。具有不同字母后綴的相同數(shù)字能夠表示相似部件的不同示例。附圖通過(guò)示例而非限制的方式概括地示例了本申請(qǐng)中討論的各個(gè)實(shí)施例。

圖1示出了根據(jù)本發(fā)明實(shí)施例的示例代碼搜索方法100的示意圖。

圖2示出了根據(jù)本發(fā)明實(shí)施例的示例代碼搜索方法200的流程圖。

圖3示出了根據(jù)本發(fā)明實(shí)施例的搜索詞預(yù)處理過(guò)程300的流程圖。

圖4示出了根據(jù)本發(fā)明實(shí)施例的計(jì)算結(jié)果集的相關(guān)性分?jǐn)?shù)的過(guò)程400的流程圖。

圖5示出了根據(jù)本發(fā)明實(shí)施例的計(jì)算結(jié)果集的代碼質(zhì)量分?jǐn)?shù)的過(guò)程500的流程圖。

圖6示出了根據(jù)本發(fā)明實(shí)施例的計(jì)算查詢意圖符合度分?jǐn)?shù)的過(guò)程600的流程圖。

圖7示出了根據(jù)本發(fā)明實(shí)施例的計(jì)算用戶反饋分?jǐn)?shù)的過(guò)程700的流程圖。

圖8示出了根據(jù)本發(fā)明實(shí)施例的調(diào)整權(quán)重系數(shù)的過(guò)程800的流程圖。

圖9示出了根據(jù)本發(fā)明實(shí)施例的代碼搜索系統(tǒng)900的示意模塊圖。

具體實(shí)施方式

在下文中,僅簡(jiǎn)單地描述了某些示例性實(shí)施例。正如本領(lǐng)域技術(shù)人員可能認(rèn)識(shí)的那樣,在不脫離本發(fā)明的精神或范圍的情況下,可通過(guò)各種不同方式修改所描述的實(shí)施例。因此,附圖和描述被認(rèn)為本質(zhì)上是示例性的而非限制性的。

參考圖1,示出了根據(jù)本申請(qǐng)實(shí)施例的示例代碼搜索方法100的框架流程圖。在步驟102,對(duì)用戶發(fā)起的搜索請(qǐng)求進(jìn)行一次搜索。在步驟104,對(duì)一次搜索的結(jié)果集進(jìn)行二次排序104。在步驟106,給用戶返回搜索結(jié)果106。

參考圖2,示出了根據(jù)本申請(qǐng)實(shí)施例的示例代碼搜索方法200的步驟流程圖。

在步驟202,用戶發(fā)起搜索請(qǐng)求。用戶一般通過(guò)搜索引擎發(fā)起搜索請(qǐng)求。在一個(gè)示例中,用戶可以通過(guò)使用諸如PC端、筆記本電腦、智能手機(jī)以及平板電腦等的設(shè)備通過(guò)網(wǎng)絡(luò)連接訪問(wèn)搜索引擎,并使用關(guān)鍵詞進(jìn)行搜索。

在一個(gè)示例中,首先對(duì)用戶輸入的搜索詞進(jìn)行分詞,因?yàn)橛脩艨赡茌斎攵鄠€(gè)詞的語(yǔ)句。

在步驟204,對(duì)于用戶輸入的搜索詞進(jìn)行預(yù)處理。其中對(duì)搜索詞進(jìn)行多重技術(shù)處理,以便盡可能地提取搜索詞的核心信息以及搜索意圖、類(lèi)別等。

在步驟206,基于對(duì)搜索詞預(yù)處理的結(jié)果進(jìn)行一次搜索,得出包含一個(gè)或多個(gè)結(jié)果的結(jié)果集。結(jié)果集原始排序是根據(jù)用戶輸入的搜索詞命中結(jié)果的頻次。

然后對(duì)通過(guò)一次搜索得到的結(jié)果集進(jìn)行二次排序。根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,二次排序可包括以下一個(gè)或多個(gè)子步驟:

步驟208:對(duì)一次搜索得到的結(jié)果集進(jìn)行相關(guān)性分?jǐn)?shù)計(jì)算,輸出結(jié)果集中的每個(gè)結(jié)果的相關(guān)性分?jǐn)?shù)。

步驟210:對(duì)一次搜索得到的結(jié)果集進(jìn)行代碼質(zhì)量分?jǐn)?shù)計(jì)算,輸出結(jié)果集中的每個(gè)結(jié)果的代碼質(zhì)量分?jǐn)?shù)。

步驟212:對(duì)一次搜索得到的結(jié)果集進(jìn)行查詢意圖符合度計(jì)算,輸出結(jié)果集中的每個(gè)結(jié)果的查詢意圖符合度分?jǐn)?shù)。

步驟214:對(duì)一次搜索得到的結(jié)果集進(jìn)行用戶反饋分?jǐn)?shù)計(jì)算,輸出結(jié)果集中的每個(gè)結(jié)果的用戶反饋分?jǐn)?shù)。

應(yīng)當(dāng)理解,以上步驟跟順序無(wú)關(guān)。

在步驟208之后,還可以包括可選的步驟218:對(duì)步驟208中得到的相關(guān)性分?jǐn)?shù)進(jìn)行歸一化計(jì)算。

在步驟210之后,還可以包括可選的步驟220:對(duì)步驟210中得到的代碼質(zhì)量分?jǐn)?shù)進(jìn)行歸一化計(jì)算。

在步驟212之后,還可以包括可選的步驟222:對(duì)步驟212中得到的查詢意圖符合度分?jǐn)?shù)進(jìn)行歸一化計(jì)算。

在步驟214之后,還可以包括可選的步驟224:對(duì)步驟214中得到的用戶反饋分?jǐn)?shù)進(jìn)行歸一化計(jì)算。

步驟226:根據(jù)在步驟218-224中分別得到的歸一化相關(guān)性分?jǐn)?shù)、歸一化代碼質(zhì)量分?jǐn)?shù)、歸一化查詢意圖符合度分?jǐn)?shù)、歸一化用戶反饋分?jǐn)?shù)對(duì)結(jié)果集中的每個(gè)結(jié)果,計(jì)算用于二次排序的綜合分?jǐn)?shù)(或稱(chēng)為二次排序分?jǐn)?shù))。

在對(duì)結(jié)果集進(jìn)行二次排序之后,在步驟228,將經(jīng)過(guò)二次排序的所述結(jié)果集作為搜索結(jié)果返回給所述用戶。在一個(gè)示例中,以倒序的方式返回搜索結(jié)果。

參考圖3,示出了根據(jù)本申請(qǐng)實(shí)施例的搜索詞預(yù)處理的過(guò)程300的流程圖。

在步驟308中,根據(jù)用戶輸入的搜索詞,預(yù)處理模塊對(duì)搜索詞中的語(yǔ)言類(lèi)型識(shí)別,預(yù)處理模塊基于數(shù)據(jù)庫(kù)中語(yǔ)言的類(lèi)型,來(lái)識(shí)別出搜索詞中的類(lèi)型。例如用戶輸入“java多線程”,預(yù)處理模塊能夠識(shí)別出用戶是要搜索“java”語(yǔ)言類(lèi)型的代碼;例如用戶輸入“C中指針”,預(yù)處理模塊能夠識(shí)別出用戶是要搜索“C”語(yǔ)言類(lèi)型的代碼。從而把搜索結(jié)果限定于識(shí)別出的語(yǔ)言的范圍中。

在步驟310中,根據(jù)用戶輸入的搜索詞,預(yù)處理模塊基于數(shù)據(jù)庫(kù)對(duì)搜索詞進(jìn)行同義詞的處理,在后續(xù)的查詢過(guò)程中用搜索詞和同義詞作為查詢條件。例如用戶輸入“thread”,預(yù)處理模塊能夠識(shí)別出“thread”的同義詞為“線程”,在接下來(lái)的查詢過(guò)程中基于“thread”和“線程”作為查詢條件。例如用戶輸入“進(jìn)程”,預(yù)處理模塊能夠識(shí)別出“進(jìn)程”的同義詞為“process”,而在接下來(lái)的查詢過(guò)程中基于“進(jìn)程”和“process”作為查詢條件。

在步驟312中,根據(jù)用戶輸入的搜索詞,預(yù)處理模塊對(duì)搜索詞進(jìn)行核心詞的提取,基于數(shù)據(jù)庫(kù)中的核心詞匯,提取搜索詞中的核心詞,在后續(xù)的查詢中提高核心詞作為查詢條件的優(yōu)先級(jí)。例如用戶輸入“java多線程代碼”,預(yù)處理模塊基于數(shù)據(jù)庫(kù)提取搜索詞中的核心詞“多線程”,在后續(xù)的查詢結(jié)果處理中命中“多線程”的結(jié)果要比沒(méi)有命中“多線程”的結(jié)果排序優(yōu)先。而搜索詞中的“代碼”屬于非核心詞,在后續(xù)的查詢結(jié)果處理中不作為查詢依據(jù)。

在步驟314中,根據(jù)用戶輸入的搜索詞,預(yù)處理模塊根據(jù)搜索詞進(jìn)行用戶查詢意圖的分析?;陬A(yù)設(shè)的主題類(lèi)型庫(kù),預(yù)先判斷出搜索詞的所屬主題類(lèi)型,然后將用戶的搜索詞打上所屬主題類(lèi)型及其權(quán)重系數(shù)(表示傾向于這個(gè)類(lèi)型的程度的分?jǐn)?shù))的標(biāo)簽。這個(gè)標(biāo)簽會(huì)在后續(xù)的查詢中作為查詢條件以提高查詢精確度,同時(shí)作為后續(xù)的計(jì)算查詢意圖符合度分?jǐn)?shù)的輸入之一。例如,用戶輸入“如何實(shí)現(xiàn)java的多線程并發(fā)”,經(jīng)過(guò)預(yù)處理,從其中提取出“java”、“多線程”主題類(lèi)型,并給它們打上分?jǐn)?shù),得到標(biāo)簽,例如“java,0.9”、“多線程,1.0”。

參考圖4,示出了根據(jù)本申請(qǐng)實(shí)施例的計(jì)算相關(guān)性分?jǐn)?shù)的過(guò)程400的流程圖。

在一實(shí)施例中,根據(jù)用戶發(fā)起的搜索請(qǐng)求,對(duì)搜索詞進(jìn)行預(yù)處理,獲得一次搜索結(jié)果集,結(jié)果集中的排序是根據(jù)用戶輸入的搜索詞命中結(jié)果的頻次,然后對(duì)這些排序結(jié)果計(jì)算出原始相關(guān)性分?jǐn)?shù)408。在步驟410,通過(guò)相關(guān)性分?jǐn)?shù)算法對(duì)原始相關(guān)性分?jǐn)?shù)進(jìn)行計(jì)算,得出結(jié)果集中每個(gè)結(jié)果的相關(guān)性分?jǐn)?shù),其以供后續(xù)的歸一化、二次排序分?jǐn)?shù)計(jì)算使用。

在相關(guān)性分?jǐn)?shù)算法的一個(gè)示例中,計(jì)算相關(guān)性分?jǐn)?shù)的具體實(shí)現(xiàn)方式如下式所示:

score_corr=score_orig/logMN

其中,score_orig是一次搜索的結(jié)果集中每個(gè)結(jié)果的原始相關(guān)性分?jǐn)?shù);N是該結(jié)果在一次搜索結(jié)果集中的排位數(shù);M是可配置的底數(shù);score_corr是該結(jié)果的計(jì)算出的相關(guān)性分?jǐn)?shù)。

本領(lǐng)域技術(shù)人員還可以想到其他的實(shí)施例。

參考圖5,示出了根據(jù)本申請(qǐng)實(shí)施例的計(jì)算代碼質(zhì)量分?jǐn)?shù)的過(guò)程500的流程圖。

在一實(shí)施例中,根據(jù)用戶發(fā)起的搜索請(qǐng)求,對(duì)搜索詞進(jìn)行預(yù)處理,獲得一次搜索結(jié)果集,在步驟508,基于數(shù)據(jù)庫(kù)讀取代碼數(shù)據(jù),獲取結(jié)果集中每個(gè)結(jié)果的代碼內(nèi)容、屬性、代碼格式、可讀性、完整性等,例如語(yǔ)言類(lèi)型、行數(shù)、標(biāo)題以及描述等。在步驟510,依據(jù)代碼質(zhì)量評(píng)估算法提取出每個(gè)結(jié)果中代碼的質(zhì)量指標(biāo),并進(jìn)行綜合加權(quán)從而計(jì)算出每個(gè)結(jié)果的代碼質(zhì)量分?jǐn)?shù)512。代碼質(zhì)量分?jǐn)?shù)512可以衡量結(jié)果代碼的優(yōu)劣程度,以供后續(xù)歸一化、二次排序分?jǐn)?shù)計(jì)算使用。

例如,可根據(jù)如下公式計(jì)算出代碼質(zhì)量分?jǐn)?shù):

score_qual=score_row*A+score_norm*B+score_func*C

其中,score_row是一次搜索結(jié)果集中作為結(jié)果的代碼的行數(shù)項(xiàng)分?jǐn)?shù);score_norm是結(jié)果代碼的書(shū)寫(xiě)規(guī)范分?jǐn)?shù);score_func是結(jié)果代碼的功能復(fù)雜度分?jǐn)?shù);A、B和C是以上各項(xiàng)分?jǐn)?shù)的權(quán)重系數(shù),其中這些權(quán)重系數(shù)是可以預(yù)先配置的;score_qual是該結(jié)果的計(jì)算出的代碼質(zhì)量分?jǐn)?shù)。

參考圖6,示出了根據(jù)本申請(qǐng)實(shí)施例的計(jì)算查詢意圖符合度分?jǐn)?shù)的過(guò)程600的流程圖。

在一實(shí)施例中,根據(jù)用戶發(fā)起的搜索請(qǐng)求,對(duì)搜索詞進(jìn)行預(yù)處理,獲得一次搜索結(jié)果集,在步驟608,基于數(shù)據(jù)庫(kù)讀取代碼數(shù)據(jù),獲取出每個(gè)結(jié)果的代碼內(nèi)容、屬性、代碼格式、可讀性、完整性等,例如語(yǔ)言類(lèi)型、行數(shù)、標(biāo)題以及描述等。在步驟610,根據(jù)查詢意圖分析算614預(yù)測(cè)結(jié)果集中的每個(gè)結(jié)果的代碼的主題類(lèi)型以及權(quán)重系數(shù)(表示傾向于這個(gè)類(lèi)型程度的分?jǐn)?shù))。在步驟612,再次獲取用戶發(fā)起的搜索詞以及在預(yù)處理中得到的搜索詞所屬的主題類(lèi)型以及該類(lèi)型的權(quán)重系數(shù)的標(biāo)簽。對(duì)搜索詞和結(jié)果集中的所述主題和權(quán)重分別映射為(主題1,權(quán)重1),(主題2,權(quán)重2)…(主題N,權(quán)重N)。然后對(duì)610和612中得出的結(jié)果進(jìn)行相似度計(jì)算,得出查詢意圖符合度分?jǐn)?shù)616,以供后續(xù)的歸一化、二次排序分?jǐn)?shù)計(jì)算使用。例如,可根據(jù)如下公式計(jì)算出查詢意圖符合度分?jǐn)?shù):

<mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mrow> <mo>(</mo> <mi>&theta;</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>a</mi> <mo>&CenterDot;</mo> <mi>b</mi> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <mi>a</mi> <mo>|</mo> <mo>|</mo> <mo>&times;</mo> <mo>|</mo> <mo>|</mo> <mi>b</mi> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> </mrow>

其中,a是搜索詞映射后的結(jié)果;b是搜索集映射后的結(jié)果;將a和b進(jìn)行余弦相似度計(jì)算;cosθ是該結(jié)果的計(jì)算出的查詢意圖符合度分?jǐn)?shù),值越大代表相似度越高,結(jié)果為1代表完全符合。

參考圖7,示出了根據(jù)本申請(qǐng)實(shí)施例的計(jì)算用戶反饋分?jǐn)?shù)的過(guò)程700的流程圖。

在步驟708,線下周期性地收集用戶日志,根據(jù)用戶日志計(jì)算出各用戶使用界面的各項(xiàng)操作按鈕的歷史點(diǎn)擊曝光率,如搜索頁(yè)面上的代碼標(biāo)題、展開(kāi)、全屏、復(fù)制、“對(duì)我有用”等操作按鈕的點(diǎn)擊曝光率,并存儲(chǔ)在數(shù)據(jù)庫(kù)中,并且周期性地不斷更新歷史點(diǎn)擊曝光率數(shù)據(jù)。在一示例中,用戶日志為一個(gè)或多個(gè)特定網(wǎng)站為其用戶存儲(chǔ)的操作日志。

在一實(shí)施例中,根據(jù)用戶發(fā)起的搜索請(qǐng)求,對(duì)搜索詞進(jìn)行預(yù)處理,獲得一次搜索結(jié)果集,基于數(shù)據(jù)庫(kù)讀取結(jié)果得到每個(gè)結(jié)果的用戶反饋數(shù)據(jù),即各項(xiàng)操作的歷史點(diǎn)擊曝光率(這里可以請(qǐng)發(fā)明人增加一個(gè)具體的例子,說(shuō)明怎樣得到作為搜索結(jié)果的一個(gè)代碼的標(biāo)題點(diǎn)擊曝光率、展開(kāi)點(diǎn)擊曝光率、全屏點(diǎn)擊曝光率等)。在步驟712,根據(jù)用戶反饋分?jǐn)?shù)算法計(jì)算出用戶反饋分?jǐn)?shù),以供后續(xù)的歸一化、二次排序分?jǐn)?shù)計(jì)算使用。例如,可根據(jù)如下公式計(jì)算出用戶反饋分?jǐn)?shù):

score_feeb=title_cli*E+unfol_cli*F+fulsce_cli*G

其中,title_cli是一次搜索結(jié)果集中每個(gè)結(jié)果的標(biāo)題點(diǎn)擊曝光率;unfol_cli是該結(jié)果的展開(kāi)點(diǎn)擊曝光率;fulsce_cli是該結(jié)果的全屏點(diǎn)擊曝光率;E,F(xiàn),G是以上各項(xiàng)點(diǎn)擊曝光率的權(quán)重系數(shù),這些權(quán)重系數(shù)是可預(yù)先配置的;score_feeb是該結(jié)果的計(jì)算出的用戶反饋分?jǐn)?shù)。

如圖2所示,步驟208-214分別對(duì)結(jié)果集中每個(gè)結(jié)果的相關(guān)性分?jǐn)?shù)、代碼質(zhì)量分?jǐn)?shù)、查詢意圖符合度分?jǐn)?shù)、用戶反饋分?jǐn)?shù)進(jìn)行歸一化計(jì)算,分別得到如下分?jǐn)?shù):歸一化相關(guān)性分?jǐn)?shù)、歸一化代碼質(zhì)量分?jǐn)?shù)、歸一化查詢意圖符合度分?jǐn)?shù)、對(duì)一化用戶反饋分?jǐn)?shù)。歸一化是將上游有量綱的數(shù)據(jù)經(jīng)過(guò)變化,化為無(wú)量綱的數(shù)據(jù)。在一實(shí)施例中,在進(jìn)行代碼質(zhì)量分?jǐn)?shù)歸一化時(shí),針對(duì)一次搜索結(jié)果集中的搜索結(jié)果或一次搜索結(jié)果集中排序靠前的若干個(gè)(例如前50個(gè)、100個(gè)等)搜索結(jié)果,取其最大值和最小值。在一個(gè)示例中,每個(gè)結(jié)果的歸一化分?jǐn)?shù)通過(guò)以下公式計(jì)算:

score_norm_qual=(score_qual-min)/(max-min),

其中,score_qual是該結(jié)果的代碼質(zhì)量分?jǐn)?shù),min是結(jié)果集中所有結(jié)果(或排序靠前的若干個(gè)(例如前50個(gè)、100個(gè)等)搜索結(jié)果)的代碼質(zhì)量分?jǐn)?shù)中的最小值,max是結(jié)果集中所有結(jié)果(或排序靠前的若干個(gè)(例如前50個(gè)、100個(gè)等)搜索結(jié)果)的代碼質(zhì)量分?jǐn)?shù)中的最大值,score_norm_qual是該結(jié)果的歸一化代碼質(zhì)量分?jǐn)?shù)。

應(yīng)當(dāng)理解,在上面的208-214步驟之后,都可以進(jìn)行可選的歸一化步驟。

如圖2所示,在進(jìn)行歸一化分?jǐn)?shù)計(jì)算之后,根據(jù)加權(quán)算法計(jì)算出每個(gè)結(jié)果的二次排序分?jǐn)?shù),具體實(shí)現(xiàn)方式如下:

score_sort=score_norm_corr*M+score_norm_qual*N+score_norm_quer*P+score_norm_feeb*Q,

其中,score_norm_corr是歸一化相關(guān)性分?jǐn)?shù),score_norm_qual是歸一化代碼質(zhì)量分?jǐn)?shù),score_norm_quer是歸一化查詢意圖符合度分?jǐn)?shù),score_norm_feeb是歸一化用戶反饋分?jǐn)?shù),M、N、P、Q是權(quán)重系數(shù),權(quán)重系數(shù)是可預(yù)先配置的。

如圖8所示,其中上述描述的A、B、C、M、N、P、Q權(quán)重系數(shù)的配置步驟方法800如下:

在步驟802,在測(cè)試環(huán)境中部署代碼搜索服務(wù);

在步驟804,整理統(tǒng)一的搜索詞測(cè)試集;

在步驟806,根據(jù)測(cè)試集,使用服務(wù)DCG方法評(píng)估結(jié)果;

在步驟808,分析搜索效果對(duì)權(quán)重參數(shù)進(jìn)行調(diào)整;

再次重復(fù)步驟806、808直到效果達(dá)到設(shè)定的閾值。

基于上面的方法實(shí)施例,本申請(qǐng)還提供了針對(duì)代碼領(lǐng)域的搜索系統(tǒng)。以下系統(tǒng)/系統(tǒng)實(shí)施例的描述,與上述方法描述是類(lèi)似的,同方法的有益效果描述,不做贅述。對(duì)于本申請(qǐng)系統(tǒng)實(shí)施例中未披露的技術(shù)細(xì)節(jié),請(qǐng)參照本申請(qǐng)方法實(shí)施例的描述。

根據(jù)本申請(qǐng)實(shí)施例的搜索系統(tǒng)可通過(guò)軟件、硬件、固件或它們的任意組合的方式實(shí)施在任何通用或?qū)S糜?jì)算系統(tǒng)中。

如圖9所示,所述搜索系統(tǒng)包括:

發(fā)起搜索請(qǐng)求模塊902,被配置為用戶發(fā)起搜索請(qǐng)求;

分詞模塊904,被配置為對(duì)用戶發(fā)起請(qǐng)求的搜索詞進(jìn)行分詞;

搜索詞預(yù)處理模塊906,被配置為對(duì)搜索詞進(jìn)行預(yù)處理;

預(yù)處理模塊906包括語(yǔ)言類(lèi)型識(shí)別模塊908,被配置為對(duì)搜索詞進(jìn)行語(yǔ)言類(lèi)型識(shí)別;

預(yù)處理模塊906包括同義詞處理模塊910,被配置為對(duì)搜索詞進(jìn)行同義詞處理;

預(yù)處理模塊906包括提取核心詞模塊912,被配置為對(duì)搜索詞進(jìn)行核心詞的提取。

預(yù)處理模塊906包括查詢意圖分析模塊914,被配置為對(duì)搜索詞進(jìn)行用戶查詢意圖分析。

計(jì)算結(jié)果集相關(guān)性分?jǐn)?shù)模塊916,被配置為計(jì)算一次搜索得到的結(jié)果進(jìn)行相關(guān)性分?jǐn)?shù)計(jì)算;

計(jì)算結(jié)果集代碼質(zhì)量分?jǐn)?shù)模塊918,被配置為計(jì)算一次搜索得到的結(jié)果進(jìn)行代碼質(zhì)量分?jǐn)?shù)計(jì)算;

計(jì)算查詢意圖符合度分?jǐn)?shù)模塊920,被配置為計(jì)算一次搜索得到的結(jié)果進(jìn)行查詢意圖符合度分?jǐn)?shù)計(jì)算;

計(jì)算用戶反饋分?jǐn)?shù)模塊922,被配置為計(jì)算一次搜索得到的結(jié)果進(jìn)行用戶反饋分?jǐn)?shù)計(jì)算;

歸一化相關(guān)性分?jǐn)?shù)模塊924,被配置為計(jì)算相關(guān)性分?jǐn)?shù)的歸一化分?jǐn)?shù);

歸一化代碼質(zhì)量分?jǐn)?shù)模塊926,被配置為計(jì)算代碼質(zhì)量分?jǐn)?shù)的歸一化分?jǐn)?shù);

歸一化查詢意圖符合度分?jǐn)?shù)模塊928,被配置為計(jì)算查詢意圖符合度分?jǐn)?shù)的歸一化分?jǐn)?shù);

歸一化用戶反饋分?jǐn)?shù)模塊930,被配置為計(jì)算用戶反饋分?jǐn)?shù)的歸一化分?jǐn)?shù);

二次排序分?jǐn)?shù)模塊932,被配置為計(jì)算歸一化相關(guān)性分?jǐn)?shù)、歸一化代碼質(zhì)量分?jǐn)?shù)、歸一化查詢意圖符合度分?jǐn)?shù)、歸一化用戶反饋分?jǐn)?shù)進(jìn)行加權(quán)計(jì)算每個(gè)一次搜索結(jié)果的二次排序分?jǐn)?shù)。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的設(shè)備和方法可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的設(shè)備實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,如:多個(gè)單元或組件可以結(jié)合,或可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過(guò)一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機(jī)械的或其它形式的。

上述作為分離部件說(shuō)明的單元可以是、或也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個(gè)地方,也可以分布到多個(gè)網(wǎng)絡(luò)單元上;可以根據(jù)實(shí)際的需要選擇其中的部分或全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各實(shí)施例中的各功能單元可以全部集成在一個(gè)處理單元中,也可以是各單元分別單獨(dú)作為一個(gè)單元,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中;上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。

本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:移動(dòng)存儲(chǔ)設(shè)備、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。

或者,本發(fā)明上述集成的單元如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)施例的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分。而前述的存儲(chǔ)介質(zhì)包括:移動(dòng)存儲(chǔ)設(shè)備、ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1