ElasticSearch之分词器edge_ngram和ngram的区别

本文详细介绍了ElasticSearch中的两种分词器:edge_ngram和ngram。edge_ngram从首字开始按步长分词,适合首字匹配场景;ngram不仅从首字开始,还逐字按步长分词,适用于任意字符匹配。理解两者差异有助于优化搜索匹配策略。
摘要由CSDN通过智能技术生成

ElasticSearch一看就懂之分词器edge_ngram和ngram的区别
1 year ago
edge_ngram和ngram是ElasticSearch自带的两个分词器,一般设置索引映射的时候都会用到,设置完步长之后,就可以直接给解析器analyzer的tokenizer赋值使用。
这里,我们统一用字符串来做分词示例:
字符串

  1. edge_ngram分词器,分词结果如下:
    {
    "tokens": [
    {
    "token": "字",
    "start_offset": 0,
    "end_offset": 1,
    "type": "word",
    "position": 0
    },
    {
    "token": "字符",
    "start_offset": 0,
    "end_offset": 2,
    "type": "word",
    "position": 1
    },
    {
    "token": "字符串",
    "start_offset": 0,
    "end_offset": 3,
    "type": "word",
    "position": 2
    }
    ]
    }
  2. ngram分词器,分词结果如下:
    {
    "tokens": [
    {
    "token": "字",
    "start_offset": 0,
    "end_offset": 1,
    "type": "word",
    "position": 0
    },
    {
    "token": "字符",
    "start_offset": 0,
    "end_offset": 2,
    "type": "word",
    "position": 1
    },
    {
    "token": "字符串",
    "start_offset": 0,
    "end_offset": 3,
    "type": "word",
    "position": 2
    },
    {
    "token": "符",
    "start_offset": 1,
    "end_offset": 2,
    "type": "word",
    "position": 3
    },
    {
    "token": "符串",
    "start_offset": 1,
    "end_offset": 3,
    "type": "word",
    "position": 4
    },
    {
    "token": "串",
    "start_offset": 2,
    "end_offset": 3,
    "type": "word",
    "position": 5
    }
    ]
    }
    一目了然,看明白了吗?简单理解来说:edge_ngram的分词器,就是从首字开始,按步长,逐字符分词,直至最终结尾文字;ngram呢,就不仅是从首字开始,而是逐字开始按步长,逐字符分词。
    具体应用呢?如果必须首字匹配的情况,那么用edge_ngram自然是最佳选择,如果需要文中任意字符的匹配,ngram就更为合适了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值