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

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


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


配置项

 

min_gram 切分字符最小长度,默认是1。

 

max_gram 切分字符最大长度,默认是2。

 

Edge n-gram token filter

 

edge_ngram 根据 N 元语法对单词进行切分,切分方式和 ngram 最大的区别是:切分时根据设置的切分方向(默认单词开头)进行大小为 N 的滑动窗口操作,而 ngram 切分是针对每一个字符进行滑动窗口的操作。默认情况下 edge_ngram 创建最小长度1,最大长度2的字节序列。单词 hello 会被切分为 [h,he],适用于前缀匹配。


image.png


GET _analyze
{
  "tokenizer": "standard",
  "filter": [
   {
      "type": "edge_ngram"
    }
  ],
  "text": [  "hello"  ]
}

 配置项

 

min_gram 切分字符最小长度,默认是1。

 

max_gram 切分字符最大长度,默认是2。

 

side 指定切分方向,分为 front 头部和 back 尾部,默认 front。


GET _analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "edge_ngram",
      "min_gram":3,
      "max_gram":4,
      "side":"back"
    }
  ],
  "text": [ "hello" ]
}
#Response
[ llo, ello ]

Pattern_replace token filter

 

pattern_replace 过滤器将单词中正则表达式匹配到的内容替换为新的值。


GET _analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "pattern_replace",
     "pattern":"'re",
     "replacement":" Are"
    }
  ],
  "text": [
    "Hey! We're Elastic"
  ]
}
#Response
[ Hey, We Are, Elastic ]

配置项

 

all 是否所有匹配上的内容进行替换,默认为 true,设置为 false 时仅替换每个单词中第一个匹配上的内容。

 

pattern 用于匹配字符的正则表达式。

 

replacement 替换的目标字符串,可以引用正则表达式匹配到组。

 

Predicate script token filter

 

predicate_token_filter 过滤器和 condiction 过滤器一样都是通过定义的 painless 脚本对单词进行过滤,不同的是此过滤器会将不满足条件的单词删除。


GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "predicate_token_filter",
      "script": {
        "source": """
          token.term.length() > 3
        """
      }
    }
  ],
  "text": "Hey! We are Elasic "
}
#Response
[ Elastic ]

配置项

 

script 定义 painless 脚本对单词进行过滤,不符合条件的单词将会被删除。

 

Stemmer token filter

 

stemmer 过滤器根据一系列的算法规则对不同语种的单词进行词干提取处理,如 searching 处理后会还原为原型 search。通过算法处理单词的词干效率上更高,但对于不规则单词变形在提取上和平时看到的单词拼写会有一些差距。默认使用 porter stemming 算法对英文进行处理。


配置项

 

language 指定语言算法对单词进行处理,默认使用 _english_。

 

其它语种使用参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stemmer-tokenfilter.html#analysis-stemmer-tokenfilter-configure-parms

 

Stop token filter

 

stop 过滤器将删除单词中的停用词


GET _analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "stop"
    }
  ],
  "text": [
    "Hey! We are Elastic "
  ]
}
#Response
[ Hey, We, Elastic ]



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

相关实践学习
使用阿里云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)
101 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(13)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(13)
|
自然语言处理 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)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(15)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(15)
|
存储 算法 Java
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(11)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(11)
|
存储 自然语言处理 算法
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)
104 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)
109 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)

热门文章

最新文章