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的名称为EX08
http://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章

上一篇下一篇

猜你喜欢

热点阅读