带你读《Elastic Stack 实战手册》之36:——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(下)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之36:——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(下)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(中) https://developer.aliyun.com/article/1229400


pinyin 分词器

 

首先,下载 pinyin 分词器插件:https://github.com/medcl/elasticsearch-analysis-pinyin

 

本地编译并打包后,上传到 ES 安装目录下的 plugins 下并解压,然后重启 ES,重启后查看是否安装成功:

 

./bin/elasticsearch-plugin list
ik
pinyin


可以看到 pinyin 插件已经安装成功


PUT /analyze_chinese_pinyin/ 
{
    "settings" : {
        "analysis" : {
            "analyzer" : {
                "pinyin_analyzer" : {
                    "tokenizer" : "my_pinyin"
                    }
            },
            "tokenizer" : {
                "my_pinyin" : {
                    "type" : "pinyin",
                    "keep_separate_first_letter" : false,
                    "keep_full_pinyin" : true,
                    "keep_original" : true,
                    "limit_first_letter_length" : 16,
                    "lowercase" : true,
                    "remove_duplicated_term" : true
                }
            }
        }
    }
}
GET /analyze_chinese_pinyin/_analyze
{
  "text": ["南京市长江大桥"],
  "analyzer": "pinyin_analyzer"
}
#返回结果
{
  "tokens" : [
    {
      "token" : "nan",
    },
    {
      "token" : "南京市长江大桥",
    },
    {
      "token" : "njscjdq",
    },
    {
      "token" : "jing",
    },
    {
      "token" : "shi",
    },
    {
      "token" : "chang",
    },
    {
      "token" : "jiang",
    },
    {
      "token" : "da",
    },
    {
      "token" : "qiao",
    }
  ]
}
#设置测试数据
POST analyze_chinese_pinyin/_bulk
{"index":{"_id":1}}
{"name":"南京市长江大桥"}
#根据拼音查询 njscjdq
POST analyze_chinese_pinyin/_search
{
  "query": {
    "match": {
      "name.pinyin": "njscjdq"
    }
  }
}
#返回结果
"hits" : [
      {
        "_source" : {
          "name" : "南京市长江大桥"
        }
      }
    ]
#通过 nan 查询
POST analyze_chinese_pinyin/_search
{
  "query": {
    "match": {
      "name.pinyin": "nan"
    }
  }
}
#返回结果
"hits" : [
      {
        "_source" : {
          "name" : "南京市长江大桥"
        }
      }
    ]

因为 南京长江大桥 经过 pinyin_analyzer 分词器分词后,包含 nan 和 njscjdq 所以都能匹配查询到记录

 

Smart Chinese Analysis

 

参考:https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-smartcn.html


Smart Chinese Analysis 插件将 Lucene 的智能中文分析模块集成到 Elasticsearch 中,

提供了中文或中英文混合文本的分析器。该分析器使用概率知识来找到简体中文文本的最佳分词。文本首先被分解成句子,然后每个句子被分割成单词。

 

此插件必须在每个节点上安装且需要重启才生效,此插件提供了 smartcn 分析器、smartcn_tokenizer tokenizer 等。

 

/bin/elasticsearch-plugin install analysis-smartcn
-> Installing analysis-smartcn
-> Downloading analysis-smartcn from elastic
[=================================================] 100%   
-> Installed analysis-smartcn

同样执行查看已安装插件的列表


./bin/elasticsearch-plugin list
analysis-smartcn
ik
pinyin

安装成功后,需要重启 ES 以便插件生效


POST _analyze
{
  "analyzer": "smartcn",
  "text":"南京市长江大桥"
}
#返回结果
{
  "tokens" : [
    {
      "token" : "南京市",
    },
    {
      "token" : "长江",
    },
    {
      "token" : "大桥",
    }
  ]
}

hanlp 中文分词器

 

安装插件:

 

./bin/elasticsearch-plugin install https://github.com/KennFalcon/elasticsearch-analysis-hanlp/releases/download/v7.10.0/elasticsearch-analysis-hanlp-7.10.0.zip

安装后查看插件安装情况,安装成功后也同样需要重启 ES


./bin/elasticsearch-plugin list
analysis-hanlp
analysis-smartcn
ik
pinyin
GET _analyze
{
  "text": "南京市长江大桥",
  "tokenizer": "hanlp"
}
#返回结果
{
  "tokens" : [
    {
      "token" : "南京市",
    },
    {
      "token" : "长江大桥",
    }
  ]
}

小结

 

通过以上比较,没有哪一种分词器能处理各种不同的场景需求,在实际业务开发中,要根据不同的业务场景、不同的字段设置不同的分词器,以满足实际业务的需要。

 

创作人简介:

李增胜,Elasticsearch 认证工程师、PMP 项目管理认证,现就职于汇通达网络股份有限公司,任产业交易平台交易域技术经理,从事微服务架构、搜索架构方向开发与管理工作。技术关注电商、产业互联网等领域。

博客:https://www.jianshu.com/u/59dceda66b57 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
自然语言处理 Java Maven
IK分词器安装
IK分词器安装
197 0
|
5月前
|
自然语言处理 应用服务中间件 nginx
一文教会你 分词器elasticsearch-analysis-ik 的安装使用【自定义分词库】
这篇文章是关于如何在Elasticsearch中安装和使用ik分词器的详细教程,包括版本匹配、安装步骤、分词测试、自定义词库配置以及创建使用ik分词器的索引的方法。
一文教会你 分词器elasticsearch-analysis-ik 的安装使用【自定义分词库】
|
7月前
|
自然语言处理 数据可视化 Linux
ElasticSearch安装ik分词器_使用_自定义词典
ElasticSearch安装ik分词器_使用_自定义词典
81 1
|
8月前
|
自然语言处理 Java Maven
【ElasticSearch】分词器(ElasticSearchIK分词器)
【ElasticSearch】分词器(ElasticSearchIK分词器)
88 1
|
8月前
|
自然语言处理
Elasticsearch+IK+pinyin自定义分词器
Elasticsearch+IK+pinyin自定义分词器
91 0
|
JSON 自然语言处理 数据格式
ElasticSearch用ik_analyzer分词器出现报错
ElasticSearch用ik_analyzer分词器出现报错
288 0
|
自然语言处理
带你读《Elastic Stack 实战手册》之36:——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(上)
带你读《Elastic Stack 实战手册》之36:——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(上)
149 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之36:——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(中)
带你读《Elastic Stack 实战手册》之36:——3.4.2.17.5.中文分词器/ IK分词器/ pinyin分词器(中)
133 0
|
自然语言处理 搜索推荐 索引
白话Elasticsearch28-IK中文分词之IK中文分词器的安装和使用
白话Elasticsearch28-IK中文分词之IK中文分词器的安装和使用
122 0

热门文章

最新文章