本發(fā)明涉及一種對(duì)MOOC課程進(jìn)行檢索的方法,具體涉及一種基于ElasticSearch對(duì)MOOC課程進(jìn)行分面檢索的方法。
背景技術(shù):
MOOC中國(guó)作為至關(guān)重要的教育合作平臺(tái),將帶領(lǐng)中國(guó)遠(yuǎn)程教育走向國(guó)際舞臺(tái)。MOOC中國(guó)與絲路學(xué)院的結(jié)合,將成為互聯(lián)網(wǎng)+教育的全新模式,以嶄新的技術(shù)、資源、商業(yè)和服務(wù)理念和手段,實(shí)現(xiàn)網(wǎng)絡(luò)教育的轉(zhuǎn)型升級(jí),實(shí)現(xiàn)中國(guó)的網(wǎng)絡(luò)教育走向世界。
ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶(hù)能力的全文搜索引擎,基于RESTful web接口。ElasticSearch是用Java開(kāi)發(fā)的,其設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便,并作為Apache許可條款下的開(kāi)放源碼發(fā)布,是當(dāng)前流行的企業(yè)級(jí)搜索引擎。
現(xiàn)有國(guó)內(nèi)外MOOC平臺(tái)中,課程檢索主要包括三個(gè)步驟:(1)對(duì)課程名稱(chēng)的索引;(2)用戶(hù)在MOOC網(wǎng)站對(duì)課程名稱(chēng)進(jìn)行檢索;(3)MOOC檢索系統(tǒng)直接返回?cái)?shù)據(jù)。
上述方法中的索引內(nèi)容不夠全面,檢索方式單一,檢索結(jié)果輸出不夠智能。因此,這種大眾化的檢索方式并不能滿(mǎn)足用戶(hù)更全面的需求。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中的問(wèn)題,本發(fā)明提出一種基于ElasticSearch對(duì)MOOC課程進(jìn)行分面檢索的方法,將繁雜、無(wú)序的課程資源整合成一個(gè)可個(gè)性化高效搜索的形式,緩解用戶(hù)搜索所需課程信息慢的弊端,提高用戶(hù)獲得有效信息的精準(zhǔn)度,使用戶(hù)能夠檢索更全面的內(nèi)容,更快檢索到想要的課程。
為了實(shí)現(xiàn)以上目的,本發(fā)明所采用的技術(shù)方案為:包括以下步驟:
1)元數(shù)據(jù)的獲?。菏紫葟腗OOC資源服務(wù)平臺(tái)獲取MOOC課程元數(shù)據(jù),然后解析數(shù)據(jù)并將MOOC課程元數(shù)據(jù)存儲(chǔ)在本地資源數(shù)據(jù)庫(kù)中;
2)索引構(gòu)建:首先在ElasticSearch中創(chuàng)建一個(gè)索引,然后通過(guò)ElasticSearch的批量導(dǎo)入機(jī)制,將本地資源數(shù)據(jù)庫(kù)中的MOOC課程元數(shù)據(jù)在ElasticSearch集群中建立索引;
3)多字段檢索和字段權(quán)重設(shè)置:首先根據(jù)MOOC課程資源的特點(diǎn)分析出若干個(gè)字段的數(shù)據(jù)并加入到待檢索字段中,然后利用ElasticSearch的Bool查詢(xún)嵌套,實(shí)現(xiàn)多字段檢索;最后對(duì)不同字段通過(guò)設(shè)置不同的權(quán)重,排除檢索結(jié)果中的干擾信息;
4)分面檢索和查詢(xún)結(jié)果排序:首先設(shè)置若干個(gè)分面,利用ElasticSearch的聚合查詢(xún)從不同分面對(duì)MOOC課程進(jìn)行篩選和過(guò)濾,允許用戶(hù)創(chuàng)建自己的檢索路徑,實(shí)現(xiàn)分面檢索;然后設(shè)置排序,在MOOC課程檢索結(jié)果的基礎(chǔ)上按照一個(gè)特定分面進(jìn)行排序,使具有預(yù)期屬性的MOOC課程盡可能靠前,完成檢索結(jié)果排序;
5)設(shè)置檢索服務(wù)接口,提供MOOC課程檢索服務(wù),檢索服務(wù)接口要求用戶(hù)提供檢索關(guān)鍵詞和檢索分面信息,用戶(hù)提供檢索關(guān)鍵詞和檢索分面信息后,檢索服務(wù)接口向用戶(hù)返回MOOC課程信息列表以及課程分面聚合結(jié)果。
所述步驟1)中元數(shù)據(jù)的獲取具體包括以下步驟:
1.1)通過(guò)基于HTTP協(xié)議的GET請(qǐng)求規(guī)范從MOOC中國(guó)資源服務(wù)平臺(tái)獲取課程列表;
1.2)將所有課程的CourseID放入隊(duì)列中進(jìn)行循環(huán)遍歷,根據(jù)CourseID這個(gè)字段通過(guò)基于HTTP協(xié)議的GET請(qǐng)求規(guī)范從MOOC中國(guó)資源服務(wù)平臺(tái)獲取每一課程的JSON文件;
1.3)利用JsonPath解析語(yǔ)法,對(duì)JSON文件進(jìn)行解析,獲取MOOC課程元數(shù)據(jù);
1.4)將MOOC課程元數(shù)據(jù)存入本地的MySQL資源數(shù)據(jù)庫(kù)中。
所述步驟2)中索引構(gòu)建具體包括:首先構(gòu)建ElasticSearch的Mapping描述文件,指明每一個(gè)字段如何索引數(shù)據(jù)以及是否被檢索到,并使用一個(gè)默認(rèn)的分析器Analyzer;然后將Mapping文件寫(xiě)入ElasticSearch集群中,創(chuàng)建一個(gè)索引Indexmooc;最后從本地MySQL資源數(shù)據(jù)庫(kù)中獲取MOOC課程元數(shù)據(jù),利用ElasticSearch的Bulk批量導(dǎo)入索引Indexmooc中。
所述步驟3)中多字段檢索和字段權(quán)重設(shè)置具體包括以下步驟:
3.1)根據(jù)MOOC課程資源的特點(diǎn)分析出七個(gè)字段的數(shù)據(jù),七個(gè)字段包括課程名稱(chēng)CourseName、課程簡(jiǎn)介Introduction、課程機(jī)構(gòu)名稱(chēng)OrgName、章節(jié)列表Chapterlist、教師團(tuán)隊(duì)TeacherInfo、先修知識(shí)Priorknowledge和授課語(yǔ)言L(fǎng)anguage;
3.2)設(shè)置ElasticSearch的查詢(xún)器TermQuery和MatchQuery,并用ElasticSearch的Bool查詢(xún)進(jìn)行嵌套,實(shí)現(xiàn)多字段檢索;
3.3)設(shè)置不同字段的權(quán)重,引入權(quán)重公式ω=CourseName×1.0+Introduction×ω1+OrgName×ω2+Chapterlist×ω3+TeacherInfo×ω4+Priorknowledge×ω5+Language×ω6;其中MOOC課程名稱(chēng)CourseName的系數(shù)為1.0,其他字段系數(shù)ω1、ω2、ω3、ω4、ω5和ω6為待定系數(shù)。
所述權(quán)重公式的字段系數(shù)的確定過(guò)程為:首先利用信息量權(quán)數(shù)法通過(guò)控制變量在不同字段檢索一定數(shù)量的關(guān)鍵詞,然后通過(guò)計(jì)算結(jié)果中TF-IDF指標(biāo)來(lái)衡量該字段的分辨信息的數(shù)量,來(lái)衡量該字段的權(quán)重大小,并確定最終的權(quán)重公式的系數(shù)。
所述步驟4)中分面檢索和查詢(xún)結(jié)果排序具體過(guò)程:首先用戶(hù)輸入關(guān)鍵詞,創(chuàng)建查詢(xún)器,對(duì)步驟3)中的若干個(gè)字段進(jìn)行檢索,利用權(quán)重公式對(duì)結(jié)果進(jìn)行排序,排除干擾信息;然后對(duì)檢索結(jié)果進(jìn)行分面聚合查詢(xún)處理,獲得分面集合以及每一個(gè)分面包含的MOOC課程數(shù)量信息,每次增加新的分面進(jìn)行檢索,在Bool嵌套查詢(xún)中插入Matchquery查詢(xún)器;最后檢索結(jié)果默認(rèn)設(shè)置為綜合排序,即MOOC課程按照相關(guān)度進(jìn)行降序排序。
所述檢索結(jié)果還按照熱度、開(kāi)課時(shí)間和上課周數(shù)對(duì)MOOC課程進(jìn)行排序。
所述步驟5)中檢索服務(wù)接口為基于HTTP協(xié)議面向Web的檢索服務(wù)接口,檢索服務(wù)接口基于Jersey 2.0的Restful API框架對(duì)檢索服務(wù)進(jìn)行封裝,檢索服務(wù)接口的入口參數(shù)采用HTTP協(xié)議的GET請(qǐng)求規(guī)范,并要求用戶(hù)提供檢索關(guān)鍵詞和檢索分面信息。
所述HTTP協(xié)議GET請(qǐng)求的Header中加入檢索服務(wù)接口的請(qǐng)求序列號(hào)。
與現(xiàn)有技術(shù)相比,本發(fā)明首先從MOOC資源服務(wù)平臺(tái)獲取MOOC課程元數(shù)據(jù),并解析后存儲(chǔ)在本地資源數(shù)據(jù)庫(kù)中;然后在ElasticSearch中創(chuàng)建一個(gè)索引,通過(guò)ElasticSearch的批量導(dǎo)入機(jī)制,將本地資源數(shù)據(jù)庫(kù)中的MOOC課程元數(shù)據(jù)在ElasticSearch集群中建立索引;其次根據(jù)MOOC課程資源的特點(diǎn)分析出若干個(gè)字段的數(shù)據(jù)并加入到待檢索字段中,利用ElasticSearch的Bool查詢(xún)嵌套,實(shí)現(xiàn)多字段檢索,對(duì)不同字段通過(guò)設(shè)置不同的權(quán)重,排除檢索結(jié)果中的干擾信息;再次設(shè)置若干個(gè)分面,利用ElasticSearch的聚合查詢(xún)從不同分面對(duì)MOOC課程進(jìn)行篩選和過(guò)濾,允許用戶(hù)創(chuàng)建自己的檢索路徑,實(shí)現(xiàn)分面檢索,設(shè)置排序,在MOOC課程檢索結(jié)果的基礎(chǔ)上按照一個(gè)特定分面進(jìn)行排序,使具有預(yù)期屬性的MOOC課程盡可能靠前,完成檢索結(jié)果排序;最后設(shè)置檢索服務(wù)接口,提供MOOC課程檢索服務(wù),檢索服務(wù)接口要求用戶(hù)提供檢索關(guān)鍵詞和檢索分面信息,用戶(hù)提供檢索關(guān)鍵詞和檢索分面信息后,檢索服務(wù)接口向用戶(hù)返回MOOC課程信息列表以及課程分面聚合結(jié)果,完成對(duì)MOOC課程的分面檢索,本發(fā)明在將繁雜、無(wú)序的課程資源整合成一個(gè)可個(gè)性化高效搜索的形式,緩解用戶(hù)搜索所需課程信息慢的弊端,提高用戶(hù)獲得有效信息的精準(zhǔn)度,使用戶(hù)能夠檢索更全面的內(nèi)容,更快檢索到想要的課程。
進(jìn)一步,目前的MOOC課程在線(xiàn)教育網(wǎng)站在檢索字段的選取上有明顯的不足;在檢索內(nèi)容的選擇問(wèn)題上,大多數(shù)的MOOC課程檢索都是對(duì)課程名稱(chēng)的檢索,或者僅僅加入了課程簡(jiǎn)介等內(nèi)容,索引內(nèi)容不夠全面,檢索方式單一,本發(fā)明根據(jù)MOOC中國(guó)課程資源的特點(diǎn),共分析出7個(gè)字段的數(shù)據(jù)可供加入到待檢索字段中,這七個(gè)字段分別是:課程名稱(chēng)、課程簡(jiǎn)介、課程類(lèi)別、章節(jié)列表、教師團(tuán)隊(duì)、先修知識(shí)和授課語(yǔ)言,索引內(nèi)容全面,索引方式多樣化,檢索方式能滿(mǎn)足用戶(hù)更全面的需求。
進(jìn)一步,本發(fā)明檢索結(jié)果默認(rèn)設(shè)置為綜合排序,即MOOC課程按照相關(guān)度進(jìn)行降序排序,再此基礎(chǔ)上增加按照熱度、開(kāi)課時(shí)間和上課周數(shù)等對(duì)MOOC課程進(jìn)行排序,使檢索的內(nèi)容多樣化,滿(mǎn)足用戶(hù)更全面的需求。
進(jìn)一步,HTTP協(xié)議GET請(qǐng)求的Header中加入檢索服務(wù)接口的請(qǐng)求序列號(hào),保證了檢索服務(wù)接口的使用安全。
附圖說(shuō)明
圖1為本發(fā)明的流程框圖;
圖2為本發(fā)明分面檢索中字段權(quán)重設(shè)置圖。
具體實(shí)施方式
下面結(jié)合具體的實(shí)施例和說(shuō)明書(shū)附圖對(duì)本發(fā)明作進(jìn)一步的解釋說(shuō)明。
本發(fā)明對(duì)MOOC課程進(jìn)行分面檢索的方法,實(shí)現(xiàn)了通過(guò)分面檢索實(shí)現(xiàn)MOOC課程檢索,包括如下步驟。
(1)元數(shù)據(jù)的獲?。菏紫韧ㄟ^(guò)基于HTTP協(xié)議的GET請(qǐng)求規(guī)范從MOOC中國(guó)資源服務(wù)平臺(tái)獲取課程元數(shù)據(jù),然后解析數(shù)據(jù)并將元數(shù)據(jù)存儲(chǔ)在本地資源數(shù)據(jù)庫(kù)中;
(2)索引構(gòu)建:首先通過(guò)Mapping文件在ElasticSearch中創(chuàng)建一個(gè)索引,然后通過(guò)ElasticSearch的批量導(dǎo)入機(jī)制,將步驟(1)中本地資源數(shù)據(jù)庫(kù)中的MOOC課程數(shù)據(jù)在ElasticSearch集群中建立索引;
(3)多字段檢索和字段權(quán)重設(shè)置:首先,調(diào)研和實(shí)際分析MOOC課程資源的特色,共分析出了7個(gè)字段的數(shù)據(jù)可供加入到待檢索字段中,然后巧妙利用ElasticSearch的Bool查詢(xún)嵌套,實(shí)現(xiàn)多字段檢索;然后對(duì)不同字段通過(guò)設(shè)置不同的權(quán)重,排除檢索結(jié)果中的干擾信息;
(4)分面檢索和查詢(xún)結(jié)果排序:首先設(shè)計(jì)5個(gè)分面,利用ElasticSearch的聚合查詢(xún)從不同分面對(duì)MOOC課程進(jìn)行篩選和過(guò)濾,允許用戶(hù)創(chuàng)建自己的檢索路徑,實(shí)現(xiàn)分面檢索;然后設(shè)置排序,在MOOC課程檢索結(jié)果的基礎(chǔ)上按照一個(gè)特定分面進(jìn)行排序,使具有預(yù)期屬性的MOOC課程盡可能靠前,完成檢索結(jié)果排序;
(5)設(shè)置面向Web的檢索服務(wù)接口,提供基于HTTP協(xié)議的MOOC課程檢索服務(wù),該檢索接口的入口參數(shù)采用HTTP協(xié)議的GET請(qǐng)求規(guī)范,并要求用戶(hù)提供檢索關(guān)鍵詞和檢索分面等信息,該接口返回課程的一個(gè)MOOC課程信息列表以及課程分面聚合結(jié)果。
具體地,如圖1所示,分為如下五個(gè)過(guò)程:
(1)元數(shù)據(jù)的獲取,包括如下四個(gè)步驟:
第1步:通過(guò)基于HTTP協(xié)議的GET請(qǐng)求規(guī)范從MOOC中國(guó)資源服務(wù)平臺(tái)獲取課程列表;
第2步:將所有課程的CourseID放入隊(duì)列中進(jìn)行循環(huán)遍歷,根據(jù)CourseID這個(gè)字段通過(guò)基于HTTP協(xié)議的GET請(qǐng)求規(guī)范從MOOC中國(guó)資源服務(wù)平臺(tái)獲取每一課程的JSON文件;
第3步:利用JsonPath解析語(yǔ)法,對(duì)JSON文件進(jìn)行解析,獲取MOOC課程的元數(shù)據(jù);
第4步:將MOOC課程元數(shù)據(jù)存入本地的MySQL資源數(shù)據(jù)庫(kù)中;
(2)索引構(gòu)建,包括如下三個(gè)步驟:
第1步:構(gòu)建ElasticSearch的Mapping描述文件,指明每一個(gè)字段如何索引數(shù)據(jù)以及是否被檢索到,并使用一個(gè)默認(rèn)的分析器Analyzer;
第2步:將Mapping文件寫(xiě)入ElasticSearch集群中,創(chuàng)建一個(gè)索引Indexmooc;
第3步:從本地MySQL資源數(shù)據(jù)庫(kù)中獲取MOOC課程元數(shù)據(jù),利用ElasticSearch的Bulk批量導(dǎo)入索引Indexmooc中,每次導(dǎo)入5000條數(shù)據(jù);
(3)多字段檢索和字段權(quán)重設(shè)置,包括如下五個(gè)步驟。
第1步:調(diào)研國(guó)內(nèi)外知名的MOOC課程在線(xiàn)教育網(wǎng)站,發(fā)現(xiàn)目前的MOOC課程在線(xiàn)教育網(wǎng)站在檢索字段的選取上有明顯的不足;在檢索內(nèi)容的選擇問(wèn)題上,大多數(shù)的MOOC課程檢索都是對(duì)課程名稱(chēng)的檢索,或者僅僅加入了課程簡(jiǎn)介等內(nèi)容;
第2步:實(shí)際分析MOOC中國(guó)課程資源的特點(diǎn),共分析出7個(gè)字段的數(shù)據(jù)可供加入到待檢索字段中,這7個(gè)字段分別是:課程名稱(chēng)、課程簡(jiǎn)介、課程機(jī)構(gòu)名稱(chēng)、章節(jié)列表、教師團(tuán)隊(duì)、先修知識(shí)和授課語(yǔ)言。
第3步:設(shè)計(jì)ElasticSearch的查詢(xún)器TermQuery和MatchQuery,用ElasticSearch的Bool查詢(xún)進(jìn)行嵌套,實(shí)現(xiàn)多字段檢索;
第4步:如圖2所示,設(shè)計(jì)不同字段的權(quán)重,引入權(quán)重公式ω=CourseName×1.0+Introduction×ω1+OrgName×ω2+Chapterlist×ω3+TeacherInfo×ω4+Priorknowledge×ω5+Language×ω6;其中MOOC課程名稱(chēng)的系數(shù)為1.0,其他是待定系數(shù);
第5步:利用信息量權(quán)數(shù)法,通過(guò)控制變量地在不同字段檢索一定數(shù)量的關(guān)鍵詞,計(jì)算結(jié)果中TF-IDF指標(biāo)來(lái)衡量該字段的分辨信息的多少,來(lái)衡量該字段的權(quán)重大小,并確定最終的權(quán)重公式的系數(shù)。
(4)分面檢索和查詢(xún)結(jié)果排序,包括如下過(guò)程:
首先,用戶(hù)輸入關(guān)鍵詞,創(chuàng)建Elasticsearch的查詢(xún)器,對(duì)步驟(3)中的7個(gè)字段進(jìn)行檢索,利用權(quán)重公式對(duì)結(jié)果進(jìn)行排序,排除一定的干擾信息;其次,對(duì)檢索結(jié)果進(jìn)行分面聚合查詢(xún)處理,獲得分面集合以及每一個(gè)分面包含的MOOC課程數(shù)量信息;每次增加新的分面進(jìn)行檢索,在Bool嵌套查詢(xún)中插入一個(gè)新的Matchquery查詢(xún)器;再次,檢索結(jié)果默認(rèn)設(shè)置為綜合排序,即MOOC課程按照相關(guān)度進(jìn)行降序排序,并在檢索結(jié)果頁(yè)面增加按照熱度、開(kāi)課時(shí)間和上課周數(shù)等對(duì)MOOC課程進(jìn)行排序;
(5)設(shè)計(jì)面向Web的檢索服務(wù)接口,包括如下過(guò)程:
首先,基于HTTP協(xié)議的Web檢索服務(wù)接口主要采用基于Jersey 2.0的Restful API框架,對(duì)檢索服務(wù)進(jìn)行封裝;其次,該檢索服務(wù)接口的入口參數(shù)采用HTTP協(xié)議的GET請(qǐng)求規(guī)范,并要求用戶(hù)提供檢索關(guān)鍵詞和檢索分面等信息;再次,在HTTP請(qǐng)求的Header中,需要加入該服務(wù)接口的請(qǐng)求序列號(hào),保證檢索服務(wù)接口的使用安全。