Elasticsearch06:Elasticsearch分词详解:ES分词介绍、倒排索引介绍、分词器的作用、停用词

一、ES分词介绍
ES中在添加数据,也就是创建索引的时候,会先对数据进行分词。
在查询索引数据的时候,也会先根据查询的关键字进行分词。
所以在ES中分词这个过程是非常重要的,涉及到查询的效率和准确度。

假设有一条数据,数据中有一个字段是titile,这个字段的值为LexCorp BFG-9000。
我们想要把这条数据在ES中创建索引,方便后期检索。

创建索引和查询索引的大致流程是这样的:


图中左侧是创建索引的过程:
首先对数据进行空白字符分割,将LexCorp BFG-9000切分为LexCorp和BFG-9000。
然后进行单词切割,将LexCorp切分为Lex和Corp,BFG-9000切分为BFG和9000。
最后执行小写转换操作,将英文单词全部转换为小写。

图中右侧是查询索引的过程:
后期想要查询LexCorp BFG-9000这条数据,但是具体的内容记不清了,大致想起来了一些关键词Lex corp bfg9000。

接下来就根据这些关键词进行查询,
首先还是对数据进行空白符分割,将Lex corp bfg9000切分为Lex、corp 和bfg9000。
然后进行单词切割,Lex和corp不变,将bfg9000切分为bfg和9000。
最后执行小写转换操作,将英文单词全部转换为小写。
这样其实在检索的时候就可以忽略英文大小写了,因为前面在创建索引的时候也会对英文进行小写转换。

到这可以发现,使用Lex corp bfg9000是可以查找到LexCorp BFG-9000这条数据的,因为在经过空白符分割、单词切割、小写转换之后,这两条数据是一样的,其实只要能有一个单词是匹配的,就可以把这条数据查找出来。

了解了这个流程之后,我们以后在搜索引擎里面搜索一些内容的时候其实就知道要怎么快速高效的检索内容了,只需要输入一些关键词,中间最好用空格隔开,针对英文字符不用纠结大小写了。

这些数据在ES中分词之后,其实在底层会产生倒排索引,注意了,倒排索引是ES能够提供快速检索能力的核心,下面来看一下这个倒排索引

二、倒排索引介绍
假设有一批数据,数据中有两个字段,文档编号和文档内容。

针对这一批数据,在ES中创建索引之后,最终产生的倒排索引内容大致是这样的:

解释:

单词ID:记录每个单词的单词编号。
单词:对应的单词。
文档频率:代表文档集合中有多少个文档包含某个单词。
倒排列表:包含单词ID及其它必要信息。
DocId:单词出现的文档id。
TF:单词在某个文档中出现的次数。
POS:单词在文档中出现的位置。
1
2
3
4
5
6
7
以单词 加盟 为例,其单词编号为6,文档频率为3,代表整个文档集合中有3个文档包含这个单词,对应的倒排列表为{(2;1;<4>),(3;1;<7>),(5;1;<5>)},含义是在文档2,3,5中出现过这个单词,在每个文档中都只出现过1次,单词 加盟 在第一个文档的POS(位置)是4,即文档的第四个单词是 加盟 ,其它的类似。
这个倒排索引已经是一个非常完备的索引系统,实际搜索系统的索引结构基本如此。

三、分词器的作用
前面分析了ES在创建索引和查询索引的时候都需要进行分词,分词需要用到分词器。下面来具体分析一下分词器的作用:

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

分词器对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的。
也就是说不同的分词器分词的规则是不同的!

所以对于不同的语言,要用不同的分词器。
在创建索引时会用到分词器,在搜索时也会用到分词器,这两个地方要使用同一个分词器,否则可能会搜索不出结果。

四、分词器的工作流程
分词器的工作流程一般是这样的:

1、切分关键词,把关键的、核心的单词切出来。
2、去除停用词。
3、对于英文单词,把所有字母转为小写(搜索时不区分大小写)
针对停用词下面来详细分析一下。

五、停用词
有些词在文本中出现的频率非常高,但是对文本所携带的信息基本不产生影响。
例如:
英文停用词:a、an、the、of等
中文停用词:的、了、着、是、标点符号等

文本经过分词之后,停用词通常被过滤掉,不会被进行索引。
在检索的时候,用户的查询中如果含有停用词,检索系统也会将其过滤掉(因为用户输入的查询字符串也要进行分词处理)。
排除停用词可以加快建立索引的速度,减小索引库文件的大小,并且还可以提高查询的准确度。
如果不去除停用词,可能会存在这个情况:
假设有一批文章数据,基本上每篇文章里面都有 的 这个词,那我在检索的时候只要输入了的这个词,那么所有文章都认为是满足条件的数据,但是这样是没有意义的。

1、常见的英文停用词汇总:
a
about
above
after
again
against
all
am
an
and
any
are
aren't
as
at
be
because
been
before
being
below
between
both
but
by
can't
cannot
could
couldn't
did
didn't
do
does
doesn't
doing
don't
down
during
each
few
for
from
further
had
hadn't
has
hasn't
have
haven't
having
he
he'd
he'll
he's
her
here
here's
hers
herself
him
himself
his
how
how's
i
i'd
i'll
i'm
i've
if
in
into
is
isn't
it
it's
its
itself
let's
me
more
most
mustn't
my
myself
no
nor
not
of
off
on
once
only
or
other
ought
our
ours
ourselves
out
over
own
same
shan't
she
she'd
she'll
she's
should
shouldn't
so
some
such
than
that
that's
the
their
theirs
them
themselves
then
there
there's
these
they
they'd
they'll
they're
they've
this
those
through
to
too
under
until
up
very
was
wasn't
we
we'd
we'll
we're
we've
were
weren't
what
what's
when
when's
where
where's
which
while
who
who's
whom
why
why's
with
won't
would
wouldn't
you
you'd
you'll
you're
you've
your
yours
yourself
yourselves
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
2、常见的中文停用词汇总:



































































































使












沿












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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
六、中文分词方式
针对中文而言,在分词的时候有多种分词规则:
常见的有单字分词、二分法分词、词库分词等
单字分词:“我”、“们”、“是”、“中”、“国”、“人”
二分法分词:“我们”、“们是”、“是中”、“中国”、“国人”。
词库分词:按照某种算法构造词,然后去匹配已建好的词库集合,如果匹配到就切分出来成为词语。

从这里面可以看出来,其实最理想的中文分词方式是词库分词。

七、常见的中文分词器
针对前面分析的几种中文分词方式,对应的有一些已经实现好的中分分词器。

在词库分词方式领域里面,最经典的就是IK分词器,你懂得!
————————————————
 

原文地址:https://blog.csdn.net/thlzjfefe" target="_blank" rel="noopener" title="thlzjfefe">thlzjfefe</a> <img class="article-time-img article-heard-img" src="https://csdnimg.cn/release/blo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读774次,点赞24次,收藏16次。typescript项目中我们使用typings-for-css-modules-loader来替代css-loader实现css modules。1、typings-for-css-modules-loader加载器介绍 Webpack加载器,用作css-loader的替代产品,可动态生成CSS模块的TypeScript类型这句话是什么意思呢?就是编译时处理css文件...
文章浏览阅读784次。react router redux antd eslint prettier less axios_react+antd+redux+less
文章浏览阅读3.9k次,点赞5次,收藏11次。需要删除.security-7索引文件。把在第1步中的被注释的配置打开。之后就是按照提示输入密码。执行bin目录下的文件。_failed to authenticate user 'elastic' against
文章浏览阅读1.2k次,点赞23次,收藏24次。Centos 8 安装es_centos8 yum elasticsearch
文章浏览阅读3.2k次。设置完之后,数据会⾃动同步到其他节点。修改密码时,将第⼀步配置删除,然后重启。单独使⽤⼀个节点⽣成证书;执⾏设置⽤户名和密码的命令。执⾏完上⾯命令以后就可以在。⽂件,在⾥⾯添加如下内容。这个⽂件复制到其他节点下。其中⼀个节点设置密码即可。依次对每个账户设置密码。全部节点都要重启⼀遍。需要在配置⽂件中开启。个⽤户分别设置密码,⽬录下,证书⽂件名为。功能,并指定证书位置。_es设置账号和密码
文章浏览阅读1.9k次,点赞2次,收藏7次。针对多数据源写入的场景,可以借助MQ实现异步的多源写入,这种情况下各个源的写入逻辑互不干扰,不会由于单个数据源写入异常或缓慢影响其他数据源的写入,虽然整体写入的吞吐量增大了,但是由于MQ消费是异步消费,所以不适合实时业务场景。不易出现数据丢失问题,主要基于MQ消息的消费保障机制,比如ES宕机或者写入失败,还能重新消费MQ消息。针对这种情况,有数据强一致性要求的,就必须双写放到事务中来处理,而一旦用上事物,则性能下降更加明显。可能出现延时问题:MQ是异步消费模型,用户写入的数据不一定可以马上看到,造成延时。_mysql同步es
文章浏览阅读3.6w次,点赞48次,收藏44次。【程序员洲洲送书福利-第十九期】《C++ Core Guidelines解析》
文章浏览阅读1.3k次。当我们在开发Vue应用时,经常需要对表单进行校验,以确保用户输入的数据符合预期。Vue提供了一个强大的校验规则机制,通过定义rules规则,可以方便地对表单进行验证,并给出相应的错误提示。_vue ruler校验
文章浏览阅读2k次,点赞16次,收藏12次。Linux内核源码下载地址及方式_linux源码下载
文章浏览阅读1k次。这样在每天自动生成的索引skywalking_log_xxx就会使用上述模版来生成,timestamp会被设置成date类型。然后此时在–>索引管理–>kibana–>索引模式添加skywalking_log*索引时就会有时间字段了。在通过skywalking将日志收集到es后,由于skywalking收集的日志(skywalking_log索引)没有date类型的字段导致在es上再索引模式中没有时间范围的查询。skywalking收集的日志有时间戳字段timestamp,只是默认为long类型。_skywalking timestamp
文章浏览阅读937次,点赞18次,收藏21次。1.初始化git仓库,使用git int命令。2.添加文件到git仓库,两步走:2.1 使用命令,注意,可反复多次使用,添加多个文件;2.2 使用命令,完成。此笔记是我个人学习记录笔记,通过廖雪峰的笔记进行学习,用自己能理解的笔记记录下来,如果侵权,联系删。不存在任何盈利性质,单纯发布后,用于自己学习回顾。
文章浏览阅读786次,点赞8次,收藏7次。上述示例中的 origin 是远程仓库的名称,https://github.com/example/repository.git 是远程仓库的 URL,(fetch) 表示该远程仓库用于获取更新,(push) 表示该远程仓库用于推送更新。你可以选择在本地仓库创建与远程仓库分支对应的本地分支,也可以直接将本地仓库的分支推送到远程仓库的对应分支。将 替换为远程仓库的名称(例如 origin), 替换为要推送的本地分支的名称, 替换为要推送到的远程分支的名称。_git remote 智能切换仓库
文章浏览阅读1.5k次。配置eslint校验代码工具_eslint 实时校验
文章浏览阅读1.2k次,点赞28次,收藏26次。Git入门基础介绍,什么是Git,如何使用Git,以及Git的工作的基本原理
文章浏览阅读2.7k次。基于官方给出的几种不同环境不同的安装方式,本文将会选择在使用.zip文件在Windows上安装Elasticsearch在Linux或macOS上从存档文件安装ElasticsearchInstall Elasticsearch with Docker (此种方式待定)使用Docker安装Elasticsearch。_elasticsearch安装部署windows
文章浏览阅读3.3k次,点赞5次,收藏11次。【Linux驱动】内核模块编译 —— make modules 的使用(单模块编译、多模块编译)_make modules
文章浏览阅读1k次。docker启动es报错_max virtual memory areas vm.max_map_count [65530] is too low, increase to at
文章浏览阅读4.2k次,点赞2次,收藏6次。使用docker单机安装elasticsearch后再安装kibana时找不到es。_unable to retrieve version information from elasticsearch nodes. security_ex
文章浏览阅读1.1k次。日志处理对于任何现代IT系统都是关键部分,本教程专为新手设计,通过详细解释Logstash的三大核心组件,为您展示如何从零开始搭建强大的日志处理系统。您还将学习如何同步MySQL数据到Elasticsearch,并通过一个"Hello World"示例快速入门。无论您是完全的新手还是有一些基础,本教程都将引导您顺利掌握Logstash的基本操作和高级应用。_logstash mysql
文章浏览阅读1.1w次,点赞5次,收藏25次。执行这条指令之后,你的本地项目就与远程Git仓库建立了连接,你就可以开始对你的代码进行版本追踪和协作开发了。使用“git remote add origin”指令,可以轻松地将本地项目连接到远程Git仓库。git remote set-url origin 执行这条指令之后,Git就会将已经添加的名为“origin”的仓库删除。git remote add origin 其中,是你的远程Git仓库的网址。_git remote add origin