创新实训(43)——ElasticSearch中默认分词器的设置

前言

之前实现了句子的查询,并且将句子进行查询之前,已经分词并且去除了停用词,剩下的很多停用词都是可能与句子的意思之间相关的所以并没有被去掉,这样的句子放入ElasticSearch进行查询时,会被切分,然后查询结果中会有很多不必要出现的停用词,作为关键词出现,初步分数是分词器的问题。
在使用 elasticsearch 进行搜索的时候,经常会发现一篇和搜索关键字完全不匹配的文章排在最前面。它可能就被 ik_max_word 分词后,刚好就有类似 “的” 这样的无意义词,导致造成一篇含有很多无意义词的文章得到一个较高的评分。

如下:
在这里插入图片描述

尝试IK分词器

之前下载过ik分词器,但是发现放错了地方,并没有生效,现在进行了重新的配置。
但是启动ElasticSearch时,报错,发现是ElasticSearch与分词器的版本对不上,所以又去找到了对应版本的分词器
我使用的是6.8.8的ElasticSearch:

https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.8.8

然后进行配置
配置文件在 elasticsearch-7.x.x\plugins\ik\config\ 目录下,打开目录可以看到有 stopword.dic 和 extra_stopword.dic 两个文件。stopword.dic 里面的为配置的英文停用词,extra_stopword.dic 里面为配置的中文停用词。

默认是使用 stopword.dic 的,想要使用 extra_stopword.dic 的话是需要在 ik 中进行配置的,配置文件为 IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict"></entry>
     <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">extra_stopword.dic</entry>
    <!--用户可以在这里配置远程扩展字典 -->
    <!-- <entry key="remote_ext_dict">words_location</entry> -->
    <!--用户可以在这里配置远程扩展停止词字典-->
    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

IK分词,主要强调两种分词模式:ik_smart和ik_max_word
更换成ik_smart尝试
在这里插入图片描述

重启之后重新建立索引的检索结果为:

在这里插入图片描述
发现已经和之前的结果不一样了,但是还是出现了很多的垃圾

pinyin分词器

拼音分词器有许多可以设置的选项。可以自行定义。原本的拼音分词器,只能分析出来全拼、首字母全拼、和每个字的完整拼音,这里我先用默认的试了试
之后发现有人将ik中文分词器和 pinyin分词器共同使用。
pinyin分词器会讲查询分解成更准确的拼音

https://github.com/medcl/elasticsearch-analysis-pinyin/releases/tag/v6.8.8

在这里插入图片描述
在这里插入图片描述
发现结果并没有什么变化,还是一如既往的差。

更换分词器的类型
在这里插入图片描述
emm还是没有什么差距

更换一下查询的QueryBuilder

 QueryBuilder titleQuery = QueryBuilders.disMaxQuery();
 QueryBuilder contentQuery = QueryBuilders.disMaxQuery();
((DisMaxQueryBuilder) titleQuery).add(QueryBuilders.matchQuery("title", content));
((DisMaxQueryBuilder) contentQuery).add(QueryBuilders.matchQuery("content", content));

在这里插入图片描述

总结

发现拼音分词器的效果还是比ik分词器要好一些,花的时间也算没有白费。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值