国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Lucene的教學資源垂直檢索的研究與實現(xiàn)

2018-09-29 02:38安倩楠高東懷劉健
智能計算機與應用 2018年4期
關鍵詞:教學資源

安倩楠 高東懷 劉健

摘 要:隨著網(wǎng)絡教學資源的與日俱增,如何在海量的教學資源中找到用戶所需要的信息成為當下關注的熱點。本文基于全文檢索工具包Lucene,結合XML文檔在教學資源中的廣泛使用,設計并實現(xiàn)了一個面向教學資源的垂直檢索系統(tǒng)。首先,設計系統(tǒng)總體架構和業(yè)務流程;然后,分析研究全文檢索工具包Lucene和XML檢索技術;最后,完成系統(tǒng)中索引模塊和檢索模塊的實現(xiàn)。

關鍵詞:教學資源; 垂直檢索; Lucene; XML

Abstract: With the increasing number of teaching resources on the Internet, how to find the information needed by users in a vast amount of teaching resources has become the focus of attention. This paper is based on the full-text search tool package Lucene, combined with the extensive use of XML documents in teaching resources, designs and implements a vertical retrieval system oriented to educational resources. Firstly, it designs the overall structure and business process of the system; then, it analyzes and researches Lucene and XML retrieval technology of the full text retrieval toolkit; finally, it completes the implementation of the system indexing module and the retrieval module.

Key words: teaching resources; vertical retrieval; Lucene; XML

引言

隨著信息技術的進步,網(wǎng)絡上的教學資源數(shù)量逐年呈指數(shù)級增加,越來越多的用戶通過互聯(lián)網(wǎng)接受在線教育[1]。面對數(shù)目巨大的信息,用戶需要快速準確地找到自己需要的教學資源。盡管傳統(tǒng)的檢索系統(tǒng)(如百度、谷歌等)信息覆蓋面很廣,但其檢索結果的準確性較差,用戶仍需要從浩瀚的結果中找出自己所需要的資源,而垂直檢索系統(tǒng)可以提供針對某一行業(yè)或特定領域的更高質(zhì)量的檢索服務,提高用戶的學習效率。

在上述背景下,本文結合XML文檔在教學資源上的廣泛使用,基于全文檢索工具包Lucene,設計并且實現(xiàn)了一個面向教學資源的垂直檢索系統(tǒng),其目的是為廣大學習者提供一個能夠準確定位、交互性較好的信息檢索服務。

1 教學資源垂直檢索系統(tǒng)的設計

1.1 系統(tǒng)業(yè)務流程設計

信息檢索系統(tǒng)的架構按照功能可以分為查詢語句分析模塊、搜索模塊、建立索引模塊和XML文檔提取模塊。本系統(tǒng)的業(yè)務流程主要分2部分。

(1)處理文檔集合。首先將文檔集合經(jīng)過預處理和信息抽取后,轉(zhuǎn)換成為Lucene可以讀取的Document流,然后利用解析XML格式文檔的開源工具——Dom4j提取文檔部分內(nèi)容,寫入到相應的域中,最后選取文檔中部分內(nèi)容作為索引,并添加到索引庫。

(2)處理用戶輸入的查詢。系統(tǒng)根據(jù)全文檢索工具包Lucene內(nèi)置的QueryPaser類,對用戶輸入的查詢語句解析成為若干個關鍵字,在建好的索引庫中找出關鍵字所在的位置及相應文檔,并根據(jù)一定的排序算法給用戶返回相應的文檔[2]。

系統(tǒng)的體系架構如圖1所示。

1.2 功能模塊設計

1.2.1 文檔提取模塊

XML格式的文檔帶有特殊的結構,每一個開始標簽和相對應的結束標簽中間都是所對應的內(nèi)容。實現(xiàn)自動化地讀取并且提取標簽之間的文本內(nèi)容,是建立索引之前的一個重要工作。圖2給出一篇XML文檔的基本結構。

目前出現(xiàn)了多種對XML文檔抽取信息的開源工具,其中Dom4j是一個用于讀寫XML文檔的Java API工具。Dom4j是SourceForge旗下的一個開放源代碼軟件,專為Java平臺設計,采用Java集合框架,如今Dom4j越來越多地被用來在Java環(huán)境下提取XML文檔。所以,本系統(tǒng)采用開源工具包Dom4j去掉XML文檔中的標簽,并且將文檔中的文本內(nèi)容提取出來,為創(chuàng)建索引做好準備。

1.2.2 建立索引模塊

建立索引是檢索系統(tǒng)的核心部分[4],其具體步驟是:先對文檔進行分詞,去掉停用詞和標點符號;然后創(chuàng)建一個存放索引的文件;接著,通過配置管理類和索引目錄創(chuàng)建IndexWriter對象,IndexWriter類創(chuàng)建一個索引器,其是用來向索引中添加新的索引目錄,同時還提供了對外實現(xiàn)創(chuàng)建索引的接口;最后,向document里面添加新建的索引文件。

1.2.3 更新索引模塊

通常情況下,檢索系統(tǒng)中的教學資源不是一成不變的,如果教學資源出現(xiàn)了新增、修改、刪除等變化,那么在用戶進行查詢操作之前,就應該對索引庫進行及時的更新,以保證用戶能夠及時獲取最新的信息。

在全文檢索工具包Lucene中,IndexWriter類封裝了對索引的幾個基本操作:增加索引和刪除索引。但是Lucene本身并不支持對索引的更新,更新索引的方法是:首先刪掉之前建立好的所有索引,然后利用Lucene內(nèi)置的方法重新對文檔集合建立索引表。由于手工更新索引費時費力,所以一般可以設置定時器,3天進行1次或者每周進行1次索引更新。一般來說,索引更新的時間應該挑選在客戶端比較空閑的時候,夜晚進行索引庫的更新能夠降低對用戶使用的影響。

2 Lucene與XML技術研究

2.1 Lucene介紹

Lucene由Dong Cuutting開發(fā),在2001年成為Apache軟件基金會的一個項目[5]。Lucene并不是一個完整的應用程序,而是由Java編寫、具有高性能、可擴展性的全文檢索工具包。

從組織結構來看,Lucene主要包含索引核心、對外接口、基礎結構封裝3個部分,其中設計者將源碼分成了7個子模塊,每個模塊功能定義明確、復用性強、相對獨立。各源碼塊之間的關系如圖3所示。

上圖中,Org.apache.lucene.index(索引)模塊主要負責對初始文檔進行建立索引、刪除索引、更新索引等操作,其中包含IndexReader和IndexWriter 2個類,IndexReader主要對已生成的索引進行優(yōu)化、刪除、更新等操作,IndexWriter主要對文本創(chuàng)建索引。

Org.apache.lucene.search(搜索)模塊主要負責將用戶查詢(query)在Analysis模塊解析后,在生成的索引文件進行搜索,并按照一定的評分機制,對結果排序返回給用戶。對索引的檢索利用IndexSearch類來實現(xiàn)。

Org.apache.lucene.analysis(分析)模塊主要負責對用戶查詢和建立的索引中的文本內(nèi)容進行切詞、去掉停用詞和標點符號、過濾等一系列操作,最終都轉(zhuǎn)換成基本單元Term。

Org.apache.lucene.queryPaser(查詢解析)模塊主要負責對用戶查詢請求進行語法解析,完成詞項之間的邏輯計算。

Org.apache.lucene.store(數(shù)據(jù)存儲)模塊主要負責創(chuàng)建索引時底層的I/O操作。

Org.apache.lucene.document(文檔)模塊主要負責存儲索引時的文本文件管理,把各個類型的文本經(jīng)過解析器轉(zhuǎn)換為Document流。

Org.apache.lucene.util(工具)模塊主要提供了相關公用的工具類,如高亮顯示查詢項等。

2.2 XML文檔提取

XML(eXtensible Markup Language)是一種可擴展標記性語言,可以用來標記電子文檔并使其具有結構特點。隨著互聯(lián)網(wǎng)上信息的大幅度增加,XML技術已經(jīng)在各行各業(yè)中得到深入、廣泛的應用,傳統(tǒng)的基于純文本和HTML的檢索系統(tǒng)已無法滿足人們的信息獲取需求。XML具有簡單性、高可擴展性、互操作性強和開放性等優(yōu)勢,在某些應用領域中正在逐漸替代純文本和HTML,成為網(wǎng)絡上信息表示的主要形式之一。

XML文檔是具備嚴格語法規(guī)則的結構化文檔,所以對XML文檔的檢索就是結構化檢索[6]。結構化檢索相對于非結構化檢索的一大難點是用戶希望返回文檔的其中一部分,而不是整篇文檔。比如,用戶在書架中查找一本書,用戶可能更希望得到的信息是書名,而不是作者和出版社。返回文檔的哪些部分給用戶,所對應的問題是,對于文檔的哪些部分建立索引。這都需要在具有嵌套關系的XML文檔中提取出文檔的部分內(nèi)容??梢?,提取包含信息的最小單位的文檔內(nèi)容是具有極大價值和難度。

XML解析就是從XML文檔中提取出部分需要的數(shù)據(jù)?,F(xiàn)在出現(xiàn)了多種對XML文檔抽取信息的開源工具,Dom4j是一個用于讀寫XML文檔的Java API工具。由于Dom4j具備性能卓越、功能強大、操作簡單便捷等優(yōu)點,已經(jīng)越來越多地被用在Java環(huán)境下提取XML文檔。

根據(jù)圖2中所示的XML文檔,要提取該文檔中< abstract >…< abstract >標簽中的內(nèi)容,實現(xiàn)代碼如下所示:

SAXReader iread = new SAXReader();------------------①

Document document = iread.read( fileList.get(i)); ------------------②

Element root = document.getRootElement();-----------------③

String abStract=root.selectSingleNode("/article/front/article-meta/abstract/p").getText();-----------------④

① 創(chuàng)建SAXReader對象。

② 讀取一篇文檔,并且轉(zhuǎn)換成為Document。

③ 獲取根節(jié)點元素對象。

④ 從根節(jié)點出發(fā),按照XML結構提取出文檔摘要這一單個節(jié)點的內(nèi)容。

3 教學資源垂直檢索系統(tǒng)實現(xiàn)

3.1 創(chuàng)建索引

建立索引是構建教學資源檢索系統(tǒng)的關鍵環(huán)節(jié),通過Lucene的IndexWrier索引器可以進行創(chuàng)建索引、刪除索引等操作。創(chuàng)建索引的具體過程如圖4所示。

[PS安倩楠4.EPS;S*2;X*2,BP#]

實現(xiàn)建立索引的主要功能代碼如下:

Directory directory = null;

indexWrite = null;

directory = FSDirectory.open(new File("D:\\\\LuceneDemo\\\\aaa"));------------------①

indexWrite = new IndexWriter(directory, indexWriteConfig); ------------------②

Field abstract=new TextField("abStract", entry.getValue(), Store.YES,

Field.Index.NOT_ANALYZED);-----------------③

①創(chuàng)建存放索引的文件,存放在"D:\\\\LuceneDemo\\\\aaa"路徑下

② 創(chuàng)建索引器

③ 針對文檔摘要(abstract)建立一個域

如果索引器IndexWriter檢測到directory目錄中還沒有建立索引時,就會自動創(chuàng)建一個新索引;如果directory目錄中已經(jīng)包含索引時,那么IndexWriter就會向已經(jīng)生成的索引只增加新的內(nèi)容。

3.2 檢索

進行檢索時,系統(tǒng)會先對用戶輸入的查詢做分析處理,將整個查詢語句劃分為幾個關鍵詞(檢索時用的分詞器與建立索引時的分詞器是一致的);隨后在之前建立的索引文件中依次遍歷,找出每一個關鍵詞在索引文件所對應的位置和出現(xiàn)頻率等信息;接下來在數(shù)據(jù)庫中提取出與關鍵詞匹配的文檔信息;最后,根據(jù)Lucene中的匹配算法和排序算法,將相關文檔返回給用戶。

下面給出實現(xiàn)檢索功能的一個例子:

Directory directory = null;

directory = FSDirectory.open(new File("D:\\\\LuceneDemo\\\\aaa"));------------------①

DirectoryReader dReader = DirectoryReader.open(directory);

QueryParser parser = new QueryParser(Version.LUCENE_43, "abstract", analyzer); ------------------②

Query query = parser.parse("biological");-----------------③

TopDocs topDocs = searcher.search(query,50); -----------------④

① 打開建立好的索引文件

② 輸入要搜索的域

③ 用戶輸入的查詢關鍵詞

④ 查找滿足條件的前50條記錄

[LL]3.3 界面呈現(xiàn)

教學資源垂直檢索系統(tǒng)界面主要功能是和用戶交互,包括一個輸入框和一個“檢索”按鈕。用戶在輸入框中輸入查詢關鍵詞,并點擊“檢索”按鈕,就可以把查詢請求交給系統(tǒng)處理。例如,輸入查詢關鍵字“l(fā)ung cancer”,點擊“檢索”按鈕,系統(tǒng)將跳轉(zhuǎn)到顯示結果的列表頁面。檢索出的前3條結果列表如圖5所示,從圖中可以看出,每一條檢索結果都包含文檔標題和文檔摘要2個部分,當返回的檢索結果比較多時,可以進行分頁處理,也可以預覽文檔的縮略信息。

4 結束語

本文基于全文檢索工具包Lucene,結合XML文檔在教學資源中的廣泛應用,實現(xiàn)了一個面向教學資源的垂直檢索系統(tǒng),避免用戶在海量的信息資源中逐一篩選,從而提高學習效率。同時,該系統(tǒng)的實現(xiàn)也對其它提供教學資源檢索服務的各類平臺具有較強的借鑒意義。

參考文獻

[1] 葉浩明. 面向高等教育領域的垂直搜索引擎的設計與實現(xiàn)[D]. 成都:電子科技大學,2014.

[2] 張錦. 基于教育領域的垂直搜索引擎的研究與設計[D]. 蘭州:蘭州交通大學,2014.

[3] 劉喜平. XML文檔搜索中的查詢處理技術研究[D]. 南昌:江西財經(jīng)大學,2010.

[4] 楊月華,杜軍平,平源. 基于本體的智能信息檢索系統(tǒng)[J]. 軟件學報,2015,26(7):1675-1687.

[5] 王屾. 基于Lucene的同義詞擴展檢索的研究與實現(xiàn)[D]. 天津:天津財經(jīng)大學,2011.

[6] 王磊. 基于XML的Web信息采集系統(tǒng)設計與實現(xiàn)[J]. 齊齊哈爾大學學報(自然科學版),2017,33(2):25-28.

猜你喜歡
教學資源
新能源汽車技術專業(yè)教學資源開發(fā)
高職教學翻轉(zhuǎn)課堂中數(shù)字化教學資源的開發(fā)
新型教學資源在綜合課程中的應用
新型教學資源在語文教學中的應用
初中數(shù)學數(shù)字化教學資源的建設與應用
對初中數(shù)學教學資源開發(fā)與利用的思考
麦盖提县| 沙田区| 普兰县| 喜德县| 平江县| 扎鲁特旗| 孟连| 琼海市| 佛教| 长子县| 五大连池市| 民和| 奉贤区| 枞阳县| 霸州市| 青浦区| 会东县| 闵行区| 北安市| 瓦房店市| 金溪县| 灵璧县| 卢湾区| 鹤岗市| 木里| 荣昌县| 资源县| 西乌珠穆沁旗| 建湖县| 东乡| 潮州市| 芷江| 新密市| 牟定县| 锦州市| 广德县| 岳池县| 翁源县| 伊川县| 龙川县| 新津县|