Elasticsearch自定义分析器analyzer分词实践
【摘要】 基础知识回顾
分析器的组成结构:
分析器(analyzer)
- Character filters (字符过滤器)0个或多个
- Tokenizer (分词器)有且只有一个
- Token filters (token过滤器)0个或多个
1234
内置分析器
1、whitespace 空白符分词
POST _analyze
{
"analyze...
基础知识回顾
分析器的组成结构:
分析器(analyzer)
- Character filters (字符过滤器)0个或多个
- Tokenizer (分词器)有且只有一个
- Token filters (token过滤器)0个或多个
内置分析器
1、whitespace 空白符分词
POST _analyze
{
"analyzer": "whitespace", "text": "你好 世界"
}
{
"tokens": [ { "token": "你好", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "世界", "start_offset": 3, "end_offset": 5, "type": "word", "position": 1 }
]
}
2、pattern正则表达式分词,默认表达式是\w+
(非单词字符)
配置参数
pattern : 一个Java正则表达式,默认 \W+
flags : Java正则表达式flags。比如:CASE_INSENSITIVE 、COMMENTS
lowercase : 是否将terms全部转成小写。默认true
stopwords : 一个预定义的停止词列表,或者包含停止词的一个列表。默认是 _none_
stopwords_path : 停止词文件路径
// 拆分中文不正常
POST _analyze
{
"analyzer": "pattern", "text": "你好世界"
}
{
"tokens": []
}
// 拆分英文正常
POST _analyze
{
"analyzer": "pattern", "text": "hello world"
}
{
"tokens": [ { "token": "hello", "start_offset": 0, "end_offset": 5, "type": "word", "position": 0 }, { "token": "world", "start_offset": 6, "end_offset": 11, "type": "word", "position": 1 }
]
}
// 在索引上自定义分析器-竖线分隔
PUT my-blog
{
"settings": { "analysis": { "analyzer": { "vertical_line": { "type": "pattern", "pattern": "\\|" } } }
},
"mappings": { "doc": { "properties": { "content": { "type": "text", "analyzer": "vertical_line" } } }
}
}
// 测试索引分析器
POST /blog-v4/_analyze
{
"analyzer": "vertical_line",
"text": "你好|世界"
}
POST /blog-v4/_analyze
{
"field": "content",
"text": "你好|世界"
}
// 两者结果都是
{
"tokens": [ { "token": "你好", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "世界", "start_offset": 3, "end_offset": 5, "type": "word", "position": 1 }
]
}
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/108854769
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)