当前位置:   article > 正文

【ElasticSearch】IK分词器中停用词问题_es搜索停用词

es搜索停用词

问题描述

在ES中进行部分关键词搜索时,搜索无结果,如搜索 【IT】

环境描述

中文分词插件

这里使用的是 analysis-ik

分词调试

POST test_index/_analyze
{
  "text":"IT Manager",
  "analyzer": "ik_max_word"
}
  • 1
  • 2
  • 3
  • 4
  • 5

分词结果,分词结果中不包含IT

{
  "tokens": [
    {
      "token": "manager",
      "start_offset": 3,
      "end_offset": 10,
      "type": "ENGLISH",
      "position": 0
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

原因分析

根据项目:lucene
我们可以看到在 cjk(中文、日文和韩文)目录下的停用词中,包含了该停用词,从而导致索引中不会包含该停用词。
在这里插入图片描述
项目:https://github.com/infinilabs/analysis-ik 中的停用词,extra_stopword.dic
在这里插入图片描述

解决方案

在实践过程中,我们通过自定义stopword的方式(如下定义),无法解决该问题

{
  "settings": {
    "analysis": {
      "filter": {
        "chinese_stop": {
          "type":       "stop",
          "stopwords":  [] 
        }
      },
      "analyzer": {
        "ik_max_word_custom": {
          "type":       "custom",
          "tokenizer":  "ik_max_word",
          "filter": ["chinese_stop"]
        }
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

方案一:
在配置文件中移除相应的停用词
在这里插入图片描述
该方式效果如下:
分词请求:

POST test_index/_analyze
{
  "text":"IT Manager",
  "analyzer": "ik_max_word"
}
  • 1
  • 2
  • 3
  • 4
  • 5

分词结果:

{
  "tokens": [
    {
      "token": "it",
      "start_offset": 0,
      "end_offset": 2,
      "type": "ENGLISH",
      "position": 0
    },
    {
      "token": "manager",
      "start_offset": 3,
      "end_offset": 10,
      "type": "ENGLISH",
      "position": 1
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

方案二:
我们可以将对应的字段使用standard分词器存储到另一个字段,如 field.en ,在匹配的时候,两个字段同时进行匹配即可
值得注意的是,这里我们不能去使用english的分词器,一个是因为 english 中也会过滤掉一些停用词,如这里的【IT】,另外其还会自动索引为词根。

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

闽ICP备14008679号