Elasticsearch 索引分词器

本文详细介绍了Elasticsearch中的分词器概念,包括分析器、字符过滤器、分词器和词项过滤器的工作原理。探讨了如何自定义分词器,并通过实例展示了各种内置组件的应用,如HTMLStripCharacterFilter、MappingCharacterFilter、PatternReplaceCharacterFilter等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 认识分词器

1.1 Analyzer   分析器

    在ES中一个Analyzer 由下面三种组件组合而成:

    • character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符。处理完后再交给tokenizer进行分词。一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理。

    • tokenizer:分词器,对文本进行分词。一个analyzer必需且只可包含一个tokenizer。

    • token filter:词项过滤器,对tokenizer分出的词进行过滤处理。如转小写、停用词处理、同义词处理。一个analyzer可包含0个或多个词项过滤器,按配置顺序进行过滤。

1.2 如何测试分词器

POST _analyze
{
  "analyzer": "whitespace",
  "text":     "The quick brown fox."
}

POST _analyze
{
  "tokenizer": "standard",
  "filter":  [ "lowercase", "asciifolding" ],
  "text":      "Is this déja vu?"
}

    • position:第几个词

    • offset:词的偏移位置

 

2. 内建的character filter

HTML Strip Character Filter

  html_strip :过滤html标签,解码HTML entities like &.

Mapping Character Filter

  mapping :用指定的字符串替换文本中的某字符串。

Pattern Replace Character Filter

  pattern_replace :进行正则表达式替换。

2.1 HTML Strip Character Filter

POST _analyze
{
  "tokenizer":      "keyword", 
  "char_filter":  [ "html_strip" ],
  "text": "<p>I&apos;m so <b>happy</b>!</p>"
}

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值