葉文全
摘要:本文結(jié)合分詞搜索、相關(guān)度排序、自定義分頁,并使用存儲(chǔ)過程實(shí)現(xiàn)搜索。在搜索的準(zhǔn)確性、相關(guān)度、性能、安全等方面都有較大的改良,較好的解決了微課管理系統(tǒng)的站內(nèi)搜索難題。
關(guān)鍵詞:微課;分詞搜索;相關(guān)度排序;存儲(chǔ)過程
中圖分類號(hào):TP391.3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)10-0035-02
伴隨著微課在高校教學(xué)中的應(yīng)用日益普及,越來越多的高校根據(jù)自身需求,對微課管理系統(tǒng)進(jìn)行自主研發(fā)或二次開發(fā)。站內(nèi)搜索是微課管理系統(tǒng)中的一個(gè)重要功能,直接影響了用戶能否快速搜索到所需要的微課資源。使用搜索引擎平臺(tái)提供的站內(nèi)搜索(如:百度站內(nèi)搜索),存在著數(shù)據(jù)收錄延遲與收錄不全的缺陷,同時(shí)。純粹模糊查詢的站內(nèi)搜索相關(guān)詞無法匹配且容錯(cuò)性低,也不能滿足微課管理系統(tǒng)中站內(nèi)搜索的需求。因此,急需一種可行性高、適用于高校自建微課管理系統(tǒng)的搜索方案。系統(tǒng)開發(fā)借鑒主流搜索引擎的搜索原理,以閩北職業(yè)技術(shù)學(xué)院微課管理系統(tǒng)(以下簡稱系統(tǒng))為開發(fā)實(shí)例,從分詞搜索、相關(guān)度排序、自定義分頁三個(gè)方向進(jìn)行研究,并使用存儲(chǔ)過程實(shí)現(xiàn)系統(tǒng)站內(nèi)搜索功能。
1 搜索增強(qiáng)方案研究
系統(tǒng)搜索的重點(diǎn)并不是把大量的微課資源搜索出來,而是在注重搜索準(zhǔn)確性的同時(shí)提高搜索的容錯(cuò)性,將搜索結(jié)果按相關(guān)度進(jìn)行排序,并以分頁的方式高效的呈現(xiàn)給用戶。
1.1 分詞技術(shù)
分詞技術(shù)指搜索引擎針對用戶提交查詢的關(guān)鍵詞串進(jìn)行的查詢處理后根據(jù)用戶的關(guān)鍵詞串用各種匹配方法進(jìn)行分詞的一種技術(shù)[1]。分詞技術(shù)經(jīng)過大量的實(shí)踐應(yīng)用,發(fā)展至今已十分成熟。分詞技術(shù)包括3種方法,分別是:字符串匹配的分詞方法、詞義分詞法、統(tǒng)計(jì)分詞法。分詞準(zhǔn)確性對搜索引擎來說十分重要,但如果分詞速度太慢也會(huì)影響分詞效果。因此,分詞的準(zhǔn)確性與速度是分詞技術(shù)的兩個(gè)重要指標(biāo)。
1.2 中文分詞
中文分詞指的是將一個(gè)漢字序列切分成多個(gè)單獨(dú)的詞,是一個(gè)將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程[2]。雖然分詞算法十分成熟,但在中文分詞中仍然存在兩大難點(diǎn):
(1)歧義識(shí)別:歧義指一個(gè)句子可能有多種切分方法。包含交叉歧義和組合歧義,組合歧義必須根據(jù)整個(gè)句子來識(shí)別,比交叉歧義更難。(2)新詞識(shí)別:新詞指專業(yè)術(shù)語未登錄詞。新詞中的人名、機(jī)構(gòu)名、地名、產(chǎn)品名、商標(biāo)名、簡稱、省略語等都是很難處理的問題,且使用頻率較高。目前新詞識(shí)別準(zhǔn)確率已經(jīng)成為評價(jià)一個(gè)分詞系統(tǒng)好壞的重要標(biāo)志之一。
1.3 中文分詞系統(tǒng)
由于中文分詞在實(shí)現(xiàn)上難度大、投入高,對于高校自建的系統(tǒng)而言,使用現(xiàn)成的中文分詞系統(tǒng)用以解決搜索過程中的分詞難題,投入小、見效快,是一種不錯(cuò)的解決方案。中文分詞系統(tǒng)比較有代表性的包括:漢語詞法分析系統(tǒng)(ICTCLAS)、基于HTTP協(xié)議的開源中文分詞系統(tǒng)(HTTPCWS)、簡易中文分詞系統(tǒng)(SCWS)、PHP無組件分詞系統(tǒng)(PhpanAlysis)。以上4種中文分詞系統(tǒng)對于中文分詞、詞性標(biāo)注、命名實(shí)體識(shí)別、新詞識(shí)別、支持用戶詞典都有較強(qiáng)的功能支持,能夠解決搜索過程中的分詞難題。
簡易中文分詞系統(tǒng)(SCWS)提供了分詞API,可供用戶直接調(diào)用,讓用戶省去了分詞系統(tǒng)搭建與詞庫維護(hù)的工作。SCWS分詞API僅支持POST請求方式,其請求參數(shù)變量及含義如表1所示。
在保障分詞功能的基礎(chǔ)上結(jié)合投入的成本與使用的便捷,系統(tǒng)采用簡易中文分詞系統(tǒng)(SCWS)提供的分詞API進(jìn)行分詞,并將分詞API調(diào)用過程封裝成一個(gè)方法。
1.4 相關(guān)度排序
相關(guān)度指的是查詢關(guān)鍵字與查詢結(jié)果的匹配相關(guān)度。相關(guān)度排序可以將匹配越高的查詢結(jié)果越靠前顯示,從而讓用戶更快的查閱到自己想要的數(shù)據(jù)。搜索引擎會(huì)對搜索結(jié)果用算法進(jìn)行排序后再顯示,相關(guān)度涉及到的因素較多,不同的搜索引擎其算法也有所區(qū)別。
基于關(guān)鍵字詞頻的相關(guān)度算法指的是關(guān)鍵詞在被搜索內(nèi)容中出現(xiàn)的次數(shù)越多則匹配相關(guān)度越高,在搜索結(jié)果中排序越靠前。在MSSQL中并沒有提供計(jì)算關(guān)鍵詞在被搜索內(nèi)容中出現(xiàn)次數(shù)的函數(shù),因此,需要編寫一個(gè)UDF來實(shí)現(xiàn)計(jì)算關(guān)鍵詞在被搜索內(nèi)容中出現(xiàn)的次數(shù),供執(zhí)行搜索操作的存儲(chǔ)過程調(diào)用。對于自建微課管理系統(tǒng)而言,在選用相關(guān)度算法時(shí)要結(jié)合實(shí)現(xiàn)的難度與后期維護(hù)的工作量。經(jīng)分析,系統(tǒng)采用基于關(guān)鍵字詞頻的相關(guān)度算法,并結(jié)合發(fā)布時(shí)間與訪問量進(jìn)行排序。
1.5 自定義分頁
搜索的過程涉及數(shù)據(jù)讀取與數(shù)據(jù)呈現(xiàn),當(dāng)數(shù)據(jù)量較大時(shí)消耗的時(shí)間會(huì)較多。為了進(jìn)一步提高搜索性能,使用自定義分頁對數(shù)據(jù)進(jìn)行讀取與呈現(xiàn),可提高數(shù)據(jù)讀取和數(shù)據(jù)呈現(xiàn)兩個(gè)環(huán)節(jié)的性能。普通分頁與自定義分頁相比,如圖1、圖2所示。
通過圖1與圖2的對比,自定義分頁基于存儲(chǔ)過程實(shí)現(xiàn),只讀當(dāng)前頁數(shù)據(jù),直接綁定數(shù)據(jù)控件無需再次分頁,與普通分頁相比性能得到了較大的改良。
2 搜索增強(qiáng)方案實(shí)現(xiàn)
根據(jù)對搜索增強(qiáng)方案的研究,系統(tǒng)搜索增強(qiáng)的實(shí)現(xiàn)主要圍繞分詞功能、相關(guān)度算法、自定義分頁。系統(tǒng)使用ASP.NET+MSSQL 2008進(jìn)行開發(fā),搜索過程基于存儲(chǔ)過程實(shí)現(xiàn),提高了搜索的執(zhí)行效率、減少網(wǎng)絡(luò)流量、增強(qiáng)安全性[3]。
2.1 分詞功能實(shí)現(xiàn)
分詞功能采用調(diào)用簡易中文分詞系統(tǒng)(SCWS)提供的分詞API來實(shí)現(xiàn)。分詞功能封裝在類FenChi.cs中,以公共的靜態(tài)方法public static string Segment(string keyWord)供系統(tǒng)調(diào)用。當(dāng)用戶輸入的關(guān)鍵詞少于3個(gè)字時(shí),則不需要做進(jìn)一步分詞,3個(gè)字及3個(gè)字以上時(shí),調(diào)用SCWS提供的分詞API。采用HttpWebRequest提交數(shù)據(jù)、HttpWebResponse接收API回調(diào)數(shù)據(jù),回調(diào)數(shù)據(jù)以Josn格式返回,并利用Newtonsoft.Json.Linq.JObject對回調(diào)數(shù)據(jù)進(jìn)行處理,通過foreach循環(huán)以字符串的形式返回分詞結(jié)果,多個(gè)分詞之間使用空格隔開。
2.2 相關(guān)度排序?qū)崿F(xiàn)
系統(tǒng)采用基于關(guān)鍵字詞頻的相關(guān)度算法實(shí)現(xiàn)對搜索結(jié)果的相關(guān)度計(jì)算,在SQL Server編寫方法WordCount(供微課資源搜索存儲(chǔ)過程SourceSearch調(diào)用),該方法實(shí)現(xiàn)關(guān)鍵詞在某個(gè)字段出現(xiàn)次數(shù)的計(jì)算,具體參數(shù)如表2所示。
用戶輸入的關(guān)鍵詞經(jīng)過分詞處理后,從一個(gè)到多個(gè)不等,GOOGLE的最大詞語限制是10個(gè)。本系統(tǒng)把參數(shù)固定為@word1~@word5,當(dāng)超過5個(gè)分詞時(shí),忽略不計(jì),少于5個(gè)的地方視為空。系統(tǒng)站內(nèi)搜索針對微課資源表的標(biāo)題與相關(guān)詞兩個(gè)字段進(jìn)行搜索,標(biāo)題權(quán)重值為2,相關(guān)詞權(quán)重為1。相關(guān)度查詢代碼如圖3所示。
Rank值越大,相關(guān)度越高,Rank值為0的則不是所要搜索的結(jié)果。
2.3 自定義分頁實(shí)現(xiàn)
系統(tǒng)自定義分頁在存儲(chǔ)過程Source Search中實(shí)現(xiàn),采用創(chuàng)建臨時(shí)表,臨時(shí)表包含行號(hào)(標(biāo)識(shí)列)與資源編號(hào),按行號(hào)來讀取所需要頁面的數(shù)據(jù)并與微課資源表關(guān)聯(lián)從而實(shí)現(xiàn)自定義分頁。
3 結(jié)語
本文結(jié)合分詞搜索、相關(guān)度排序、自定義分頁三個(gè)角度,研究出了一種基于存儲(chǔ)過程實(shí)現(xiàn)的微課管理系統(tǒng)站內(nèi)搜索增強(qiáng)方案,并對其主要實(shí)現(xiàn)進(jìn)行了闡述。系統(tǒng)站內(nèi)搜索功能經(jīng)過測試,在搜索的功能、性能上都有了較大的提升。
參考文獻(xiàn)
[1]曹衛(wèi)峰.中文分詞關(guān)鍵技術(shù)研究[D].南京理工大學(xué),2009.
[2]梁喜濤,顧磊.中文分詞與詞性標(biāo)注研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,(02):175-180.
[3]周瑩.基于關(guān)鍵詞相關(guān)度的搜索引擎設(shè)計(jì)——以天津電大遠(yuǎn)程教育資源庫為例[J].天津電大學(xué)報(bào),2011,(03):43-46.endprint