EX08——金庸小说全文索引
2018-07-14 本文已影响0人
nicokani
1.实验目的
找到金庸的14部小说,并从中找出金庸小说哪些地方提到传奇人物“独孤求败”
2.实验环境
Windows 10;
solr版本:7.3.1版本;
Java版本:1.8.0_144(如下图查看java环境是否配置以及版本)
3.实验所需材料准备——金庸14部小说
之前班上有同学已经整理好了,并且进行了章节划分和转码(utf-8),现将小说放在如下的路径下:
D:\金庸小说资料\金庸小说全集" fileName=".*\.txt
4.在solr中新建一个core
新建core的名称为EX08http://localhost:8983/solr/#/EX08 #在浏览器中输入该url进入solr的admin界面
5.进行solr的配置
(1)添加ik分析包
将ik分词的jar添加到solr对应的目录下,这里使用的是ik-analyzer-solr7-7.x.jar分词包
接下来对ik分词包的停用词和自定义词典进行定义:
自定义词典
在自定义词典stopword.dic中添加以上内容
(2)对ik分词包进行字段类型定义
(3)配置相应的config文件
由于金庸的小说资料是纯文本类型的,并且存储在本地电脑上,因此它与我们之前传输文件的方式不一样,它通过获取文本资料存在的路径来获取信息构建索引,需要新建一个配置文件支持后续的索引,在conf目录下新建一个data-config.xml;并作如下配置(参考来源:https://www.jianshu.com/p/d6a3f82fb532)
<dataConfig>
<dataSource name="fileDataSource" type="FileDataSource" />
<document>
<!-- baseDir:被索引文件的位置 fileName:正则匹配文件名 -->
<entity
name="files" dataSource="null" rootEntity="false"
processor="FileListEntityProcessor"
baseDir="D:\金庸小说资料\金庸小说全集" fileName=".*\.txt"
onError="skip"
recursive="true">
<!-- 将文件信息与相应的managed-schema中的field对应起来,有id、filePath、size、lastModified、text这些字段 -->
<field column="file" name="id"/>
<field column="fileAbsolutePath" name="filePath" />
<field column="fileSize" name="size" />
<field column="fileLastModified" name="lastModified" />
<entity processor="PlainTextEntityProcessor" name="txtfile" url="${files.fileAbsolutePath}" dataSource="fileDataSource">
<field column="plainText" name="text"/>
</entity>
</entity>
</document>
</dataConfig>
(3)修改solrconfig.xml文件
在solrconfig.xml文件中添加以下内容:
(4)在managed-schema中设计字段
(5)重启solr
bin/solr.cmd restart -p 8983
6.索引构建
7.检索“独孤求败”
首先可以先看一下ik的分词效果:
分词的效果很满意
在14部小说中查询“独孤求败”存在的位置,这里使用了高亮,方便找出独孤求败在哪一部小说的哪一章节:
上图可以看到一共出现了9条结果,下图是高亮字段,可以看出分别出现在哪部小说的哪一章
“独孤求败”在金庸的14部小说出现在了9个章节,分别是:
《神雕侠侣》的23、26、27、30、32章
《笑傲江湖》的10、18、21、39章