【ES】--Elasticsearch的分词器深度研究

一、问题描述及分析

面对现实很多复杂情况,默认的ES搜索引擎方式已经不能支持。下面将针对常见的问题进行分析,如何使用ES的分词器达到预定效果。
常见有ik、pinyin、tsconvert三种分词器,
elasticsearch-analysis-ik
elasticsearch-analysis-pinyin
elasticsearch-analysis-stconvert

现有问题场景要求
(1)、对检索结果,要能同时搜索到简繁体、能搜索到拼音等
(2)、搜索的结果不要太零散(不要把关键词分成一个一个的字)
(3)、不希望搜索的关键词匹配到语气助词
(4)、一些特定的词语(如’中国的炎黄子孙’)不希望被分词,要能够整体匹配
面对上面等问题,分析如下:
(1)、对检索结果,要能同时搜索到简繁体、能搜索到拼音等
—对要搜索的字段进行multi-fields属性设置,使该字段能满足多场景的搜索
(2)、搜索的结果不要太零散(不要把关键词分成一个一个的字)
—ES默认的standard分词器会把汉字分为一个个汉字。ik分词器主要有ik_smart【最少切分,最粗精度】、ik_max_word【最多切分,最细精度】两种模式。
(3)、不希望搜索的关键词匹配到语气助词
—使用“停用词”来过滤掉语气助词。排除停用词可以加快建立索引的速度,减小索引库文件的大小,并且还可以提高查询的准确度。【参考https://blog.csdn.net/qq_29864051/article/details/124831207】
(4)、一些特定的词语(如’中国的炎黄子孙’)不希望被分词,要能够整体匹配
—可以通过对ik分词器添加自定义词典。另外,为了切换实际场景,可以采用“热更新自定义词典”方案。

二、analyze分析器原理

在这里插入图片描述
Char Filter:字符过滤器的工作是执行清除任务,例如剥离 HTML 标记,还有上面的把 “&” 转换为 “and” 字符串。
Tokenizer:将文本基于任何规则拆分为称为标记的术语。一般此时如ik分词器的模式起作用。
Token filter:一旦创建了token,它们就会被传递给 token filter,这些过滤器会对 token 进行规范化。 Token filter 可以更改 token,删除术语或向 token 添加术语。

三、 multi-fields字段支持多场景搜索(如同时简繁体、拼音等)

给某个字段设置多个属性的fields。如下所示

   "file_extension": {
   
   
          "type": "text",
          "fields": {
   
   
            "keyword": {
   
   
              "type": "keyword",
              "ignore_above": 256,
              "normalizer": "lowercase_normalizer"
            },
            "pinyin": {
   
   
              "type": "text",
              "analyzer": "pinyin_analyzer"
            },
            "pure": {
   
   
              "type": "text",
              "analyzer": "ts_match_all_analyzer"
            },
            "pure1": {
   
   
              "type": "text",
              "analyzer": 

相关推荐

  1. Elasticsearch与IK分词深度解析与实战应用

    2024-02-13 05:44:02       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-13 05:44:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-13 05:44:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-13 05:44:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-13 05:44:02       20 阅读

热门阅读

  1. 云原生:下一代应用的构建与运行方式

    2024-02-13 05:44:02       28 阅读
  2. 用git命令来上传项目到GitHub我自己的仓库

    2024-02-13 05:44:02       28 阅读
  3. 矩阵在计算机图像处理中的应用

    2024-02-13 05:44:02       54 阅读
  4. 让django支持下载文件

    2024-02-13 05:44:02       30 阅读
  5. Redis中缓存问题

    2024-02-13 05:44:02       28 阅读
  6. 时间序列预测——Encoder-Decoder CNN模型

    2024-02-13 05:44:02       19 阅读
  7. re:从0开始的CSS学习之路 11. 盒子垂直布局

    2024-02-13 05:44:02       32 阅读
  8. 状态模式:灵活管理对象状态的设计策略

    2024-02-13 05:44:02       35 阅读
  9. 设计模式-状态模式 State

    2024-02-13 05:44:02       26 阅读
  10. Spark编程实验五:Spark Structured Streaming编程

    2024-02-13 05:44:02       28 阅读
  11. re:从0开始的CSS之旅 12. 轮廓、阴影、圆角

    2024-02-13 05:44:02       29 阅读
  12. django实现外键

    2024-02-13 05:44:02       29 阅读