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

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


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


#1 指定 html_strip 对三个文本进行处理请求返回如下:


    "tokens": [
        {
            "token": "google.com",                    #2
            "start_offset": 32,
            "end_offset": 46,
            "type": "word",
            "position": 0
        },
        {
            "token": "\nblock-level element\n",        #3
            "start_offset": 47,
            "end_offset": 77,
            "type": "word",
            "position": 101
        },
        {
            "token": "<p>",                            #4
            "start_offset": 78,
            "end_offset": 87,
            "type": "word",
            "position": 202
        }
    ]
}

#2 带有 标签的字符串 HTML 已经被剔除掉只保留标签内的文本。

#3

标签属于块级标签,被 \n 替换。

#4 转义字符 > 和 < 替换为 HTML 转义前的大于号和小于号。

配置项

 

escaped_tags 不带尖括号的 HTML 标签数组,数组内的标签将不会剔除。例如设置 ["p"] 则保留

在文本中,不会进行剔除。

 

POST _analyze
{
  "char_filter": [
    {
      "type": "html_strip",
      "escaped_tags": ["p"]
    }
  ],
  "text": [
    "<p>block-level element</p>"
  ]
}
#Response
{
  "tokens" : [
    {
      "token" : "<p>block-level element</p>", 
      "start_offset" : 0,
      "end_offset" : 26,
      "type" : "word",
      "position" : 0
    }
  ]
}

 

关于行级标签和块级标签的区分可以参考:

https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements

https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements

 

Mapping character filter

 

mapping 字符映射过滤器用于设置一个键值对的映射。在文本中遇到键相同的字符时,字符将会替换为键相关联的值。设置键值对有两点需要注意的:

 

1、键值对中键必须唯一,值可以为空字符串。

2、字符的匹配根据贪婪模式,匹配过程将命中最长的一个。例如映射中提供了 map 和 maple 两个单词,当文本中遇到 maples 时,maple 将会被替换而不是 map,值可以替换为空字符串。

 

POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",        
      "mappings": [        
        "- => "                    #1
      ]
    }
  ],
  "text": [
    "Spider-Man"
  ]
}

#1 将文本中的连接符 - 替换为空。


{
  "tokens" : [
    {
      "token" : "SpiderMan",    #2
      "start_offset" : 0,
      "end_offset" : 10,
      "type" : "word",
      "position" : 0
    }
  ]
}

#2 带有 标签的字符串 HTML 已经被剔除掉只保留标签内的文本。

#3

标签属于块级标签,被 \n 替换。

#4 转义字符 > 和 < 替换为 HTML 转义前的大于号和小于号。

 

 配置项

 

escaped_tags 不带尖括号的 HTML 标签数组,数组内的标签将不会剔除。例如设置 ["p"] 则保留

在文本中,不会进行剔除。


POST _analyze
{
  "char_filter": [
    {
      "type": "html_strip",
      "escaped_tags": ["p"]
    }
  ],
  "text": [
    "<p>block-level element</p>"
  ]
}
#Response
{
  "tokens" : [
    {
      "token" : "<p>block-level element</p>", 
      "start_offset" : 0,
      "end_offset" : 26,
      "type" : "word",
      "position" : 0
    }
  ]
}

 

关于行级标签和块级标签的区分可以参考:

https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements

https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements

 

Mapping character filter

 

mapping 字符映射过滤器用于设置一个键值对的映射。在文本中遇到键相同的字符时,字符将会替换为键相关联的值。设置键值对有两点需要注意的:

 

1、键值对中键必须唯一,值可以为空字符串。

2、字符的匹配根据贪婪模式,匹配过程将命中最长的一个。例如映射中提供了 map 和 maple 两个单词,当文本中遇到 maples 时,maple 将会被替换而不是 map,值可以替换为空字符串。


POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",        
      "mappings": [        
        "- => "                    #1
      ]
    }
  ],
  "text": [
    "Spider-Man"
  ]
}

 #1 将文本中的连接符 - 替换为空。


{
  "tokens" : [
    {
      "token" : "SpiderMan",    #2
      "start_offset" : 0,
      "end_offset" : 10,
      "type" : "word",
      "position" : 0
    }
  ]
}



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

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

热门文章

最新文章