Elasticsearch7.X 入门学习第六课笔记----- Analysis & Analyzer 以及自定义Analyzer

本文介绍了Elasticsearch中的Analysis(分词)和Analyzer(分词器)的概念,分析器由字符过滤器、分词器和词单元过滤器组成。详细讨论了内置的分词器,如Standard、Simple和Whitespace Analyzer,并展示了如何自定义分析器。此外,还提及了中文分词的挑战和常用的中文分析器。
摘要由CSDN通过智能技术生成

目录

 

一、概念

1.1、Analysis(分词) 和 Analyzer(分词器)

1.2 、Analyzer组成

1.2.1、Character Filters - 字符过滤器

         1.2.2、Tokenizer(分词器)

1.2.3、Token Filter (词单元过滤器)

1.3、Elasticsearch的内置分词器

二、自定义分析器

中文分词

中文分析器

参考


一、概念

1.1、Analysis(分词) 和 Analyzer(分词器)

Analysis: 文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词。Analysis是通过Analyzer来实现的

当一个文档被索引时,每个Field都可能会创建一个倒排索引(Mapping可以设置不索引该Field)。

倒排索引的过程就是将文档通过Analyzer分成一个一个的Term,每一个Term都指向包含这个Term的文档集合。

当查询query时,Elasticsearch会根据搜索类型决定是否对query进行analyze,然后和倒排索引中的term进行相关性查询,匹配相应的文档。

1.2 、Analyzer组成

分析器(analyzer)都由三种构件块组成的character filters , tokenizers , token filters

  1. Character Filters - 字符过滤器,针对原始文本进行处理,如去除html。
  2. Tokenizer - 分词器,按照规则切分为单词,比如空格。
  3. Token Filter - 特征过滤器,将切分的单词进行加工。例如:转小写、删除stopwords,增加同义词等。

三者顺序Character Filters--->Tokenizer--->Token Filter

三者个数analyzer = CharFilters(0个或多个) + Tokenizer(恰好一个) + TokenFilters(0个或多个)

例如,Mastering Elasticsearch & Elasticsearch in Action,在经过分析器之后,可能会被转换为master / elasticsearch / action

1.2.1、Character Filters - 字符过滤器

   字符过滤器 用来整理一个尚未被分词的字符串。例如,如果我们的文本是HTML格式的,它会包含像 <p> 或者 <div> 这样的HTML标签,这些标签是我们不想索引的。我们可以使用 html清除 字符过滤器 来移除掉所有的HTML标签,并且像把 &Aacute; 转换为相对应的Unicode字符 Á 这样,转换HTML实体。

一个分析器可能有0个或者多个字符过滤器。

 Character Filter,常用的字符过滤器包括

类型 作用
html_strip 去除html
mapping 字符串替换
pattern replace 正则匹配替换

测试实例

1、使用Character Filter(字符过滤器) 中的html_strip 去除 html标签

# 测试过滤html标签
POST _analyze
{
  "tokenizer":"keyword",
  "char_filter":["html_strip"],
  "text": "<b>hello world</b>"
}

 

   

2、使用 Character Filter(字符过滤器) 中的mapping

#使用char filter进行替换
POST _analyze
{
  "tokenizer": "standard",
  "char_filter": [
      {
        "type" : "mapping",
        "mappings" : [ "- => _"]
      }
    ],
  "text": "123-456, I-test! test-990 650-555-1234"
}

#char filter 替换表情符号
POST _analyze
{
  "tokenizer": "standard",
  "char_filter": [
      {
        "type" : "mapping",
        "mappings" : [ ":) => happy", ":( => sad"]
      }
    ],
    "text": ["I am felling :)", "Feeling :( today"]
}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值