推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Kafka】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
总结——》【Linux】
总结——》【MongoDB】
总结——》【Elasticsearch】
Elasticsearch——》edge_ngram 分词器
一、概念
Elasticsearch 中的 edge_ngram 是一种基于字符边缘的分词器
,在生成索引时会将一个文本字段分成小的、重叠的字符串片段 n-gram,这些片段从文本的开头边缘开始,以固定长度向右扩展。它可以与搜索时指定的查询条件进行匹配,并根据匹配程度对文档进行评分。
二、工作原理
edge_ngram 分词器的工作原理是将输入文本切分成一个个较小的子字符串,然后将这些子字符串作为词项添加到索引中。这个过程涉及两个参数:min_gram 和 max_gram,它们控制了生成的词项的长度范围。edge_ngram 对每个字符串都生成了一组从开头边缘向右扩展的 n-gram,而不仅仅是像 ngram 那样生成所有可能的 n-gram。这使得 edge_ngram 更适合用于前缀匹配和自动完成功能等场景。
参数 | 描述 | 默认值 |
---|---|---|
min_gram | 拆分字符的最小阈值 | 1 |
max_gram | 拆分字符的最大阈值 | 2 |
三、示例
1、默认词项的长度
# 默认生成最小长度为1且最大长度为2的N-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"
}