当前位置:   article > 正文

Elasticsearch ik分词器的ik_mart和ik_max_word模式_ik分词器的作用

ik分词器的作用

概述

Elaticsearch在保存数据时,会根据创建索引的mapping映射对于每个字段的数据进行分词。同时在查询索引数据的时候会对于检索词进行分词,然后再检索。因此分词对于数据库的查询效率和相关度的关系是非常大的。

分词器的作用

ES在创建索引和查询索引的时候都需要需要用到分词器进行分词,而分词器的作用:

分词器的作用是把一段文本中的词按照一定规则进行切分

由于检索和分词都需要用到分词器,因此务必保证使用的一致性,否则由于分词规则的不同导致检索不出来结果
因为分词器对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的。
也就是说不同的分词器分词的规则是不同的!

分词器的操作分析

标准分词器模式

使用kibana执行dsl语句测试

#测试分词器
POST /_analyze
{
  "analyzer": "standard",
  "text":"学习Elasticsearch数据库"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

分词结果:

{
  "tokens" : [
    {
      "token" : "学",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "习",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "elasticsearch",
      "start_offset" : 2,
      "end_offset" : 15,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "数",
      "start_offset" : 15,
      "end_offset" : 16,
      "type" : "<IDEOGRAPHIC>",
      "position" : 3
    },
    {
      "token" : "据",
      "start_offset" : 16,
      "end_offset" : 17,
      "type" : "<IDEOGRAPHIC>",
      "position" : 4
    },
    {
      "token" : "库",
      "start_offset" : 17,
      "end_offset" : 18,
      "type" : "<IDEOGRAPHIC>",
      "position" : 5
    }
  ]
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

由结果可见,标准分词器模式对于中文的分词并不友好,因此需要使用ik分词器

ik分词器

ik_smart:最少切分(最粗粒度的切分模式)

#测试分词器
POST /_analyze
{
  "analyzer": "ik_smart",
  "text":"学习Elasticsearch数据库"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

分词结果:
在这里插入图片描述

ik_max_word:最多切分(最细粒度的切分模式)

 #测试分词器
POST /_analyze
{
  "analyzer": "ik_max_word",
  "text":"学习Elasticsearch数据库"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

分词结果:
在这里插入图片描述

分词的扩展

在数据库安装目录,/plugins/elasticsearch-analysis-ik-7.8.0/config/目录下存在配置文件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"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

新增扩展字典

首先查看未扩展之前的检索
在这里插入图片描述
在配置文件同目录下新增扩展词典:myext.dict
在这里插入图片描述
在这里插入图片描述
重启es数据库,可以看到加载了自定义的扩展分词
在这里插入图片描述
重新执行分词语句,可以看到作为一个‘奥利给’词语被切分
在这里插入图片描述

新增扩展停止词字典

停止词的概念:

有些词在文本中出现的频率非常高,但是对文本所携带的信息基本不产生影响。文本经过分词之后,停止词通常被过滤掉,不会被进行索引。
在检索的时候,用户的查询中如果含有停止词,检索系统在分词处理会将其过滤掉。

例如:
英文停用词:a、an、the、of等
中文停用词:的、了、着、是、标点符号等

停止词的作用

排除停用词可以加快建立索引的速度,减小索引库文件的大小,并且还可以提高查询的准确度。

停止词的操作测试

在这里插入图片描述
在配置文件同级目录下增加停止词配置
在这里插入图片描述
在这里插入图片描述
重启es数据库,可以看到加载了自定义的扩展分词
在这里插入图片描述
切分中已经去除了停止词
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/966681
推荐阅读
相关标签
  

闽ICP备14008679号