Elasticsearch——》edge_ngram 分词器

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

一、概念

Elasticsearch 中的 edge_ngram 是一种基于字符边缘的分词器,在生成索引时会将一个文本字段分成小的、重叠的字符串片段 n-gram,这些片段从文本的开头边缘开始,以固定长度向右扩展。它可以与搜索时指定的查询条件进行匹配,并根据匹配程度对文档进行评分。

二、工作原理

edge_ngram 分词器的工作原理是将输入文本切分成一个个较小的子字符串,然后将这些子字符串作为词项添加到索引中。这个过程涉及两个参数:min_grammax_gram,它们控制了生成的词项的长度范围。edge_ngram 对每个字符串都生成了一组从开头边缘向右扩展的 n-gram,而不仅仅是像 ngram 那样生成所有可能的 n-gram。这使得 edge_ngram 更适合用于前缀匹配和自动完成功能等场景。

参数描述默认值
min_gram拆分字符的最小阈值1
max_gram拆分字符的最大阈值2

三、示例

1、默认词项的长度

# 默认生成最小长度为1且最大长度为2N-gram
GET _analyze
{
  "tokenizer": "edge_ngram",
  "text": "elastic"
}

2、指定词项的长度(自定义edge_ngram分词器)

DELETE my_index
PUT /my_index
{
  "settings": {
    "index": {
      "max_ngram_diff": 5
    },
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "edge_ngram",
          "min_gram": 2,
          "max_gram": 4
        }
      }
    }
  }
}

GET /my_index/_analyze
{
  "tokenizer": "my_tokenizer",
  "text": "elastic"
}

image.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值