ES分词器
什么是分词器?
分词器,是将用户输入的一段文本,分析成符合逻辑的一种工具。到目前为止呢,分词器没有办法做到完全的符合人们的要求。和我们有关的分词器有英文的和中文的。英文的分词器过程:输入文本-关键词切分-去停用词-形态还原-转为小写。中文的分词器分为:单字分词 例:中国人 分成中、国、人;二分法分词:例中国人:中国、国人;词典分词:有基本的语意来进行分词的,例:中国人分成中国,国人,中国人,现在用的是极易分词和庖丁分词。
Elasticsearch中的分词器
ES中索引的建立和查询的时候,需要使用相同的分词器,才能查出正确的结果。
如果,我们想把一个短语、一句话、一个字段作为整体来查询,那么我们需要设置字段为不分词,也就是不分析。而默认String字段是分析的。
先建立一个索引:
1 |
|
然后定义映射,注意:只有刚刚新建、还没有任何数据的索引,才能定义映射。定义映射Mapping可以使用_mapping RESTAPI,符合下面的标准语法:
1 |
|
比如,其中str1为String类型不分析;其他的字段str2为默认配置,就不用设置了。
1 |
|
然后添加两条数据:
1 |
|
分析的String如何查询
如果字段是不分词的,而查询的是这个字段里面的一个词,那么使用term时无法查询到目标文档的。
1 |
|
使用term查询,如果该字段是不分词,只有完整的输入目标字段,才能正确的匹配。
1 |
|
总结
对于分词的字段:
1 如果查询的是单个词,则查询到包含它的文档,返回结果与匹配程度有关。
2 如果查询的是一段能被分析的话,比如hello world。那么查询的结果是包含分析得出的词的文档,即包含hello和world的全部文档。
对于不分词的字段:
只有查询的是 目标字段的精确值,才能匹配。
ES分词器
https://leehoward.cn/2019/10/16/ES分词器/