赞
踩
Elaticsearch在保存数据时,会根据创建索引的mapping映射对于每个字段的数据进行分词。同时在查询索引数据的时候会对于检索词进行分词,然后再检索。因此分词对于数据库的查询效率和相关度的关系是非常大的。
ES在创建索引和查询索引的时候都需要需要用到分词器进行分词,而分词器的作用:
分词器的作用是把一段文本中的词按照一定规则进行切分
由于检索和分词都需要用到分词器,因此务必保证使用的一致性,否则由于分词规则的不同导致检索不出来结果
因为分词器对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的。
也就是说不同的分词器分词的规则是不同的!
使用kibana执行dsl语句测试
#测试分词器
POST /_analyze
{
"analyzer": "standard",
"text":"学习Elasticsearch数据库"
}
分词结果:
{ "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 } ] }
由结果可见,标准分词器模式对于中文的分词并不友好,因此需要使用ik分词器
#测试分词器
POST /_analyze
{
"analyzer": "ik_smart",
"text":"学习Elasticsearch数据库"
}
分词结果:
#测试分词器
POST /_analyze
{
"analyzer": "ik_max_word",
"text":"学习Elasticsearch数据库"
}
分词结果:
在数据库安装目录,/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>
首先查看未扩展之前的检索
在配置文件同目录下新增扩展词典:myext.dict
重启es数据库,可以看到加载了自定义的扩展分词
重新执行分词语句,可以看到作为一个‘奥利给’词语被切分
有些词在文本中出现的频率非常高,但是对文本所携带的信息基本不产生影响。文本经过分词之后,停止词通常被过滤掉,不会被进行索引。
在检索的时候,用户的查询中如果含有停止词,检索系统在分词处理会将其过滤掉。
例如:
英文停用词:a、an、the、of等
中文停用词:的、了、着、是、标点符号等
排除停用词可以加快建立索引的速度,减小索引库文件的大小,并且还可以提高查询的准确度。
在配置文件同级目录下增加停止词配置
重启es数据库,可以看到加载了自定义的扩展分词
切分中已经去除了停止词
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。