葉文全


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