今天介绍第二个任务——由得到的XML获得索引,将使用到Lucene包。
本文作者:龙鹏
本文前提:已经获得XML文件。
看完本文你将知道:如何建立索引,如何使用索引。
以下是核心代码的截图和说明:
1、解析
![](https://img.haomeiwen.com/i9845552/313285f8fdf7d562.png)
首先确立索引所存放的位置
![](https://img.haomeiwen.com/i9845552/50c591a0415fd7d4.png)
确定分类器和写索引对象
![](https://img.haomeiwen.com/i9845552/987464f2149ce173.png)
对存取xml文件的to文件夹中每一个xml文件即每一个file对象进行遍历操作
![](https://img.haomeiwen.com/i9845552/13514b9daf74ffb7.png)
对要获取的一系列内容进行初始化
![](https://img.haomeiwen.com/i9845552/e4f154ed2e02a149.png)
通过reader对象的read方法读取xml文件,获取document对象,getRootElement方法可以获取document的根节点
![](https://img.haomeiwen.com/i9845552/86cc14051b390ee9.png)
即这里的TEI节点
![](https://img.haomeiwen.com/i9845552/ad11678f00895840.png)
Dom4j有一系列对此document对象进行解析的方法,可以自己去探索
![](https://img.haomeiwen.com/i9845552/5b517407c69774d8.png)
如果懒得看函数,最简单的方法可以一直用element方法,这个可以获取任意一个节点的子节点,可以通过这个方法一步一步获取下面的节点元素
![](https://img.haomeiwen.com/i9845552/0074115b370acb6f.png)
如上述element对象title1author就是analytic节点,title存在analytic节点下的title节点中elementTextTrim可以获取某节点下的某个子节点的内容,即上述代码中title1author.elementTextTrim("title");就是我们要的title,
用这个方法可以获取我们想要的xml中的所有内容(对其解析方法有很多,此处只介绍最容易懂的方法),可以仿照获取author,date,affiliation,address,fulltext,page等
1、写入索引
![](https://img.haomeiwen.com/i9845552/f0df3b65734eff0c.png)
新建document对象
![](https://img.haomeiwen.com/i9845552/f6c1a1935b72440d.png)
以title为例介绍如何存储: 第一个参数:域的名称 ,第二个参数:域的内容 ,第三个参数:是否存储
![](https://img.haomeiwen.com/i9845552/0b6a3460f28da52d.png)
对所有已经获取的内容进行相似的操作
![](https://img.haomeiwen.com/i9845552/3f15f8f88b987853.png)
将这些加入document对象中
![](https://img.haomeiwen.com/i9845552/9499d905c027dea9.png)
将document对象加到索引中,即此xml所有内容已经被写入索引
![](https://img.haomeiwen.com/i9845552/4d8b11fe2a03a1fe.png)
关闭此indexWriter对象
建立的索引如下图:
![](https://img.haomeiwen.com/i9845552/ffb97504f480df6c.png)
索引
3、使用索引
下面介绍如何对索引进行查找:自己看注释吧
4的fulltext可以按照自己想查的域进行修改, keyword就是搜索的关键词
5的20是搜索的条数,如果不够只会返回最大的条数 用get方法获取自己之前写入的域的内容
![](https://img.haomeiwen.com/i9845552/e96db27aadfeadd3.png)
调用输出
![](https://img.haomeiwen.com/i9845552/c92aa82160152aa4.png)
结果
回微信公众号给个打赏呗<( ̄︶ ̄)↗[GO!]
网友评论