Elasticsearch自定义分析器analyzer分词实践

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch自定义分析器analyzer分词实践

基础知识回顾

分析器的组成结构:

分析器(analyzer)
  - Character filters (字符过滤器)0个或多个
  - Tokenizer (分词器)有且只有一个
  - Token filters (token过滤器)0个或多个

31.1.png


内置分析器

1、whitespace 空白符分词

POST _analyze
{
  "analyzer": "whitespace", 
  "text": "你好 世界"
}
{
  "tokens": [
    {
      "token": "你好",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "世界",
      "start_offset": 3,
      "end_offset": 5,
      "type": "word",
      "position": 1
    }
  ]
}

2、pattern正则表达式分词,默认表达式是\w+(非单词字符)

配置参数

pattern  :  一个Java正则表达式,默认 \W+
flags  :  Java正则表达式flags。比如:CASE_INSENSITIVE 、COMMENTS
lowercase  :  是否将terms全部转成小写。默认true
stopwords  :  一个预定义的停止词列表,或者包含停止词的一个列表。默认是 _none_
stopwords_path  :  停止词文件路径
// 拆分中文不正常
POST _analyze
{
  "analyzer": "pattern", 
  "text": "你好世界"
}
{
  "tokens": []
}
// 拆分英文正常
POST _analyze
{
  "analyzer": "pattern", 
  "text": "hello world"
}
{
  "tokens": [
    {
      "token": "hello",
      "start_offset": 0,
      "end_offset": 5,
      "type": "word",
      "position": 0
    },
    {
      "token": "world",
      "start_offset": 6,
      "end_offset": 11,
      "type": "word",
      "position": 1
    }
  ]
}
// 在索引上自定义分析器-竖线分隔
PUT my-blog
{
  "settings": {
    "analysis": {
      "analyzer": {
        "vertical_line": {
          "type": "pattern",
          "pattern": "\\|"
        }
      }
    }
  },
  "mappings": {
    "doc": {
      "properties": {
        "content": {
          "type": "text",
          "analyzer": "vertical_line"
        }
      }
    }
  }
}
// 测试索引分析器 
POST /blog-v4/_analyze
{
  "analyzer": "vertical_line",
  "text": "你好|世界"
}
POST /blog-v4/_analyze
{
  "field": "content",
  "text": "你好|世界"
}
// 两者结果都是
{
  "tokens": [
    {
      "token": "你好",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "世界",
      "start_offset": 3,
      "end_offset": 5,
      "type": "word",
      "position": 1
    }
  ]
}

参考

Elasticsearch 分词器

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
7月前
|
自然语言处理 API 索引
Elasticsearch Analyzer原理分析并实现中文分词
Elasticsearch Analyzer原理分析并实现中文分词
118 0
|
2月前
|
自然语言处理 Java 网络架构
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
这篇文章是关于如何自定义Elasticsearch的ik分词器配置以满足特定的中文分词需求。
156 0
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
|
2月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
72 5
|
4月前
|
自然语言处理 应用服务中间件 nginx
一文教会你 分词器elasticsearch-analysis-ik 的安装使用【自定义分词库】
这篇文章是关于如何在Elasticsearch中安装和使用ik分词器的详细教程,包括版本匹配、安装步骤、分词测试、自定义词库配置以及创建使用ik分词器的索引的方法。
一文教会你 分词器elasticsearch-analysis-ik 的安装使用【自定义分词库】
|
4月前
|
自然语言处理 Docker 容器
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
61 0
|
4月前
|
自然语言处理 搜索推荐 Java
ElasticSearch 实现分词全文检索 - 概述
ElasticSearch 实现分词全文检索 - 概述
43 0
|
6月前
|
自然语言处理 算法 开发者
Elasticsearch内置分析器全面解析
Elasticsearch内置分析器全面解析
|
6月前
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
569 1
|
6月前
|
自然语言处理 数据可视化 Linux
ElasticSearch安装ik分词器_使用_自定义词典
ElasticSearch安装ik分词器_使用_自定义词典
69 1
|
缓存 自然语言处理
elasticsearch hanlp插件自定义词典配置
简要讲述elasticsearch hanlp 插件自定义词典配置
elasticsearch hanlp插件自定义词典配置
下一篇
DataWorks