带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(11)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(11)


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(10) https://developer.aliyun.com/article/1229763



西班牙语分词器

 

Elasticsearch 内置语言的分词器对西班牙语处理使用 spanish,处理过程中一次对单词进行小写转换,剔除停用次,提取词干的操作。


POST _analyze
{
  "analyzer": "spanish",
  "text": "Este es un texto de prueba."
}

内部实现

 

l Tokenizer

l Standard Tokenizer

 

l Token filters

l Lowercase token filter

l Stop token filter

l Keyword marker token filter

l Stemmer token filter

 

Pattern analyzer

 

使用正则表达式匹配分隔符(不是文本内容)对文本进行切分,默认使用 \W+ 非数字字母下划线的字符作为分隔符进行切分。


GET _analyze
{
  "analyzer": "pattern",
  "text":"Heya, we’re Elastic"
}

内部实现

 

l Tokenizer

l Pattern Tokenizer

 

l Token filters

l Lower Case Token Filter

l Stop Token Filter(默认禁用)

 

配置参数

 

pattern 匹配分隔符的正则表达式,默认是 \W+

 

flags Java 中正则表达式匹配标记属性,多个标记属性使用 | 竖线分割。

 

lowercase 是否转小写操作,默认为 true 。

stopwords 配置停用词,可以根据内置语言设置如 _english_ 或者定义停用词数组,默认不启用 _none_。

 

stopwords_path 配置停用词的文件路径,需要放在 Elasticsearch 目录中的 config 目录中。


PUT /pattern_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "pattern_override": {
          "type": "pattern",
          "pattern": """@""",
          "lowercase": true
        }
      }
    }
  }
}
GET pattern_example/_analyze
{
  "analyzer": "pattern_override",
  "text": ["Info@elastic.co"]
}

分词器将下划线和非数字字母字符设置为分隔符,切分后的单词转换小写操作,返回下面的单词数组:

 

[ info, elastic.co ]

Fingerprint analyzer

 

指纹分词器通过指纹算法将输入的文本内容处理后合并为一个字符串存储。算法中按照以下顺序对文本进行以下七步的操作:

 

1、两端去空格。

2、将所有字符进行小写处理。

3、删除所有标点符号和控制字符。

4、西方文本字符 ASCII 编码化。

5、使用空格切分文本。

6、按照字母进行排序和去重操作,如果配置了停用词,停用词将会剔除。

7、将单词使用连接符拼接到一起,默认连接符为空格。


GET _analyze
{
  "analyzer": "fingerprint", 
  "text":"Twinkle,twinkle,little star"
}

通过指纹分词器处理后,返回一个字符串 token:

 

{
  "tokens" : [
    {
      "token" : "little star twinkle",
      "start_offset" : 0,
      "end_offset" : 27,
      "type" : "fingerprint",
      "position" : 0
    }
  ]
}

内部实现

 

l Tokenizer

l Standard Tokenizer

 

l Token filters

l Lower Case Token Filter

l ASCII folding

l Stop Token Filter(默认禁用)

l Fingerprint

 

配置参数

 

separator 拼接 token 使用的字符,默认空格。

 

max_output_size 拼接 token 最大长度,超过长度将会截断,默认255。

 

stopwords 配置停用词,可以根据内置语言设置如 _english_ 或者定义停用词数组,默认不启用 _none_。

 

stopwords_path 配置停用词的文件路径,需要放在 Elasticsearch 目录中的 config 目录中。


PUT fingerprint_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "fp_override": {
          "type": "fingerprint",
           "separator":"|" 
        }
      }
    }
  }
}
GET fingerprint_example/_analyze
{
  "analyzer": "fp_override",
  "text":"Twinkle,twinkle,little star"
}



《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(12) https://developer.aliyun.com/article/1229761

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 自然语言处理 Java
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(6)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(6)
118 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(13)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(13)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(15)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(15)
112 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(14)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(14)
132 0
|
自然语言处理 API 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(2)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(2)
104 0
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(3)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(3)
|
存储 自然语言处理
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(5)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(5)
149 0
|
自然语言处理 API 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(12)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(12)
|
索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(7)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(7)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(1)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(1)