通过solr定位“独孤求败”在金庸15本小说中出现的章节

实验内容

使用Solr对金庸的15本小说的每一个章节进行全文索引,定位“独孤求败”在小说中出现的章节。

实验环境

操作系统:Win10专业版 17134.137
Solr版本:7.3.1
Java版本:1.8.0_172

实验步骤

1. 启动solr并建立新的core

在solr的根目录下,同时点击鼠标右键+shift,在出现的菜单中,选择在此处打开PowerShell窗口,输入如下指令启动solr

bin/solr.cmd start

启动完成后,输入如下指令建立新core

bin/solr.cmd create -c jinyong

然后在浏览器输入

http://localhost:8983/solr/#/jinyong

即可进入solr admin界面,对新建的core进行管理

tips:在windows下重启solr需要输入如下指令

bin/solr.cmd restart -p 8983

2. 添加Ik分词包和text_ik字段类型

首先进入如下目录

image

然后,将ik的两个Jar包放入lib文件夹,配置文件放入classes文件夹
image

image

image

然后在jinyong这个core中的manage-shema中加入如下fieldType配置:

<!-- IK字段类型 -->
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
  <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" isMaxWordLength="false" useSmart="false"/>
</analyzer>
<analyzer type="query">
  <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" isMaxWordLength="false" useSmart="false"/>
</analyzer>
</fieldType>

重启solr,进入solr admin界面,查看text_ik字段类型分词效果,为了完好的分出“独孤求败”4个字,我在ik分词包的额外词(ext.dic)中加入了“独孤求败”,在停用词(stopword.dic)加入了“独孤”,“求败”两次,以上两个文件均在以下目录中

image

分词效果如图所示:
image

3. 使用DIH方式导入金庸小说的文本文件

为了知道“孤独求败”具体在哪个章节中出现,先使用章节分割器将15本小说按章节分开,每本小说一个文件夹,再用编码转换器,将txt文件编码转为utf-8,如图:

image

image

准备好被索引的文件后,在solr-7.3.1/server/solr/jinyong/conf目录下,建立data-config.xml文件。文件内容如下

<dataConfig>
  <dataSource name="fileDataSource" type="FileDataSource" />
  <document>
    <!-- baseDir:被索引文件的位置 fileName:正则匹配文件名 -->
    <!-- 索引文件出错时跳过该文件 -->
    <!-- 递归地索引baseDir下的每个文件夹 -->
    <entity name="files" dataSource="null" rootEntity="false"
    processor="FileListEntityProcessor"
    baseDir="D:\Storage\小说\金庸小说全集" 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>

然后添加相应的field到managed-schema文件中(id字段会默认定义,所以不用再重复定义)

<!-- txt文件定义字段 -->
<field name="text" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
<field name="fileName" type="string" indexed="true" stored="true" />
<field name="filePath" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="size" type="plong" indexed="true" stored="true" />
<field name="lastModified" type="pdate" indexed="true" stored="true" />

然后在solrconfig.xml文件中定义DIH
先是导入相应的jar包,在如下位置添加以下语句

image

<!--  添加DIH包依赖 -->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

再是再合适位置加入如下定义:

<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
  <str name="config">data-config.xml</str>
</lst>
</requestHandler>

重启solr后,打开solr amdin,在如下界面即可导入文件,建立索引

image

然后查看被索引的文件数
image

可见文件已经被索引成功

4.搜索“孤独求败”出现的位置

构造查询

text:独孤求败

选择在所有字段高亮,如下图,我们可以发现一共在九个文档中出现了“独孤求败”的字眼,通过查询出来的filePath,我们可以知道该词具体出现在哪本书的哪个章节

image

image

5.结论

由4的搜索结果我们可以知道,独孤求败共在两本书中出现,《神雕侠侣》与《笑傲江湖》。
而具体的章节如下:
《神雕侠侣》23、26、27、32、30
《笑傲江湖》10、18、21、39

6.参考资料

Solr建立索引练习
solr6.6 导入 文本(txt/json/xml/csv)文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容

  • 一.简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通...
    泰安青年阅读 3,655评论 0 37
  • 1 准备工作及相关介绍 solr和lucene的版本是同步更新的,最新版本是6.5.0。本案例使用4.10.3 j...
    阿太哥阅读 2,322评论 1 5
  • 2017年6月23日 星期五 雨天 今天才爬楼把昨天的课程听完,晚上开始实践课程的方法,这两天也找了以前发红包推荐...
    何小萱阅读 173评论 0 0
  • 今天已是运动会结束的第三天了。我凭着记忆几下最后一篇运动会日记。 还和往常一样。一大早,全校师生就来到了运动场,他...
    刘婧_阅读 645评论 0 4
  • 感赏自己表达与女儿的爱,感赏自己今晚在这个元宵节的晚上,思念女儿,并与女儿联系。 感赏自己今日边准备晚餐,...
    Ai琳琳_六中玩换阅读 186评论 0 0