ElasticSearch自定义分析器-集成结巴分词插件

关于结巴分词 ElasticSearch 插件:

https://github.com/huaban/elasticsearch-analysis-jieba

该插件由huaban开发。支持Elastic Search 版本<=2.3.5。

结巴分词分析器

结巴分词插件提供3个分析器:jieba_index、jieba_search和jieba_other。

  1. jieba_index: 用于索引分词,分词粒度较细;
  2. jieba_search: 用于查询分词,分词粒度较粗;
  3. jieba_other: 全角转半角、大写转小写、字符分词;

使用jieba_index或jieba_search分析器,可以实现基本的分词效果。

以下是最小配置示例:

{
    "mappings": {
        "test": {
            "_all": {
                "enabled": false
            },
            "properties": {
                "name": {
                    "type": "string",
                    "analyzer": "jieba_index",
                    "search_analyzer": "jieba_index"
                }
            }
        }
    }
}

在生产化境中,因为业务的需要,需要考虑实现以下功能:

  1. 支持同义词;
  2. 支持字符过滤器;

结巴插件提供的分析器jieba_index、jieba_search无法实现以上功能。

自定义分析器

当jieba_index、jieba_search分析器不满足生成环境的需求时,我们可以使用自定义分析器来解决以上问题。

分析器是由字符过滤器,分词器,词元过滤器组成的。

一个分词器允许包含多个字符过滤器+一个分词器+多个词元过滤器。

因业务的需求,我们需要使用映射字符过滤器来实现分词前某些字符串的替换操作。如将用户输入的c#替换为csharp,c++替换为cplus。

下面逐一介绍分析器各个组成部分。

1. 映射字符过滤器Mapping Char Filter

这个是Elastic Search内置的映射字符过滤器,位于settings –> analysis -> char_filter下:

PUT /my_index
{
    "settings": {
        "analysis": {
            "char_filter": {
                "mapping_filter": {
                    "type": "mapping",
                    "mappings": [
                      "c# => csharp",
                      "c++ => cplus"
                  ]
                }
            }
        }
    }
}

也可以通过文件载入字符映射表。

PUT /my_index
{
    "settings": {
        "analysis": {
            "char_filter": {
                "<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值