栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch之ngram分词器

ElasticSearch之ngram分词器

一、什么是NGram 分词器?

edge_ngram和ngram是ElasticSearch自带的两个分词器,一般设置索引映射的时候都会用到,设置完步长之后,就可以直接给解析器analyzer的tokenizer赋值使用。

二、怎么使用

完整的索引结构:

        {
        "settings": {
        "index.max_ngram_diff": 10,
        "number_of_shards": 128,
        "number_of_replicas": 2,
        "refresh_interval": "5s",
        "blocks": {
            "read_only_allow_delete": "false"
        },
        "analysis": {
          "analyzer": {
            "ngram_analyzer" : {
              "tokenizer" : "ngram_tokenizer"
            }
	      },
	      "tokenizer": {
          "ngram_tokenizer" : {
              "token_chars" : [
                "letter",
                "digit"
              ],
              "min_gram" : "1",
              "type" : "ngram",
              "max_gram" : "10"
            }
	      }
        }
    },
    "mappings" : {
        "_routing" : {
          "required" : true
        },
        "properties" : {
          "id" : {
            "type" : "long"
          },
          "username" : {
            "type" : "text",
            "fields" : {
              "ngram" : {
                "type" : "text",
                "analyzer" : "ngram_analyzer"
              }
            }
          },
          "password" : {
            "type" : "long"
          },
          "createTime" : {
            "type" : "date",
            "format" : "yyyy-MM-dd HH:mm:ss||strict_date_optional_time||epoch_millis"
          }
        }
    }
}

大概就是在setting中引入分词器,ngram_tokenizer里设置类型type为edge_ngram或者ngram,然后mapping中需要作ngram分词的字段指定一下就可以了。需要注意的是es7以后的版本min_gram和max_gram的粒度默认是不大于1,如果需要大于1需要设置index.max_ngram_diff大于它们的差值。

三、ngram和edge_ngram类型两者的区别

edge_ngram分词效果

ngram分词效果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号