今天介紹第二個(gè)任務(wù)——由得到的XML獲得索引,將使用到Lucene包。
本文作者:龍鵬
本文前提:已經(jīng)獲得XML文件。
看完本文你將知道:如何建立索引,如何使用索引。
以下是核心代碼的截圖和說明:
1、解析

首先確立索引所存放的位置? ??

確定分類器和寫索引對象? ? ??

對存取xml文件的to文件夾中每一個(gè)xml文件即每一個(gè)file對象進(jìn)行遍歷操作

對要獲取的一系列內(nèi)容進(jìn)行初始化? ? ??

通過reader對象的read方法讀取xml文件,獲取document對象,getRootElement方法可以獲取document的根節(jié)點(diǎn)? ? ??

即這里的TEI節(jié)點(diǎn)? ? ??

Dom4j有一系列對此document對象進(jìn)行解析的方法,可以自己去探索

如果懶得看函數(shù),最簡單的方法可以一直用element方法,這個(gè)可以獲取任意一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn),可以通過這個(gè)方法一步一步獲取下面的節(jié)點(diǎn)元素

如上述element對象title1author就是analytic節(jié)點(diǎn),title存在analytic節(jié)點(diǎn)下的title節(jié)點(diǎn)中elementTextTrim可以獲取某節(jié)點(diǎn)下的某個(gè)子節(jié)點(diǎn)的內(nèi)容,即上述代碼中title1author.elementTextTrim("title");就是我們要的title,
用這個(gè)方法可以獲取我們想要的xml中的所有內(nèi)容(對其解析方法有很多,此處只介紹最容易懂的方法),可以仿照獲取author,date,affiliation,address,fulltext,page等
1、寫入索引

新建document對象? ? ??

以title為例介紹如何存儲(chǔ): 第一個(gè)參數(shù):域的名稱 ,第二個(gè)參數(shù):域的內(nèi)容 ,第三個(gè)參數(shù):是否存儲(chǔ)

對所有已經(jīng)獲取的內(nèi)容進(jìn)行相似的操作? ? ??

將這些加入document對象中? ? ??

將document對象加到索引中,即此xml所有內(nèi)容已經(jīng)被寫入索引

關(guān)閉此indexWriter對象? ? ??
建立的索引如下圖:

索引
3、使用索引
下面介紹如何對索引進(jìn)行查找:自己看注釋吧

4的fulltext可以按照自己想查的域進(jìn)行修改, keyword就是搜索的關(guān)鍵詞
5的20是搜索的條數(shù),如果不夠只會(huì)返回最大的條數(shù) 用get方法獲取自己之前寫入的域的內(nèi)容

調(diào)用輸出

結(jié)果
回微信公眾號給個(gè)打賞唄<( ̄︶ ̄)↗[GO!]