ES默认提供了八种内置的analyzer,针对不同的场景可以使用不同的analyzer;
1、fingerprint analyzer
1.1、fingerprint类型及分词效果
fingerprint analyzer实现了fingerprinting算法(OpenRefine项目中使用);使用该analyzer场景下文本会被转为小写格式,经过规范化(normalize)处理之后移除扩展字符,然后再经过排序,删除重复数据组合为单个token;如果配置了停用词则停用词也将会被移除
//测试fingerprint analyzer默认分词效果
//请求参数
POST _analyze
{
"analyzer": "fingerprint",
"text": "Yes yes,is this déjàvu?"
}
//分词结果
{
"tokens" : [
{
"token" : "dejavu is this yes",
"start_offset" : 0,
"end_offset" : 23,
"type" : "fingerprint",
"position" : 0
}
]
}
以上句子通过分词之后得到的词(term)为:
[dejavu is this yes]
1.2、fingerprint类型可配置参数
序号 | 参数 | 参数说明 |
---|---|---|
1 | separator | 连接多个词(term)的字符,默认为空格 |
2 | max_output_size | token允许的最大值,超过该值将直接被丢弃,默认值为255 |
3 | stopwords | 预定义的停用词,可以为0个或多个,例如_english_或数组类型值,默认值为_none_ |
4 | stopwords_path | 停用词文件路径 |
//自定义fingerprint analyzer并指定停用词
PUT custom_fingerprint_stop_index
{
"settings": {
"analysis": {
"analyzer": {
"fingerprint_analyzer":{
"type":"fingerprint",
"stopwords":"_english_"
}
}
}
}
}
//请求参数
POST custom_fingerprint_stop_index/_analyze
{
"analyzer": "fingerprint_analyzer",
"text": "Yes yes,is this déjàvu?"
}