java学习讨论群:725562382

2,自定义分析器Analyzer

curl -X PUT "192.168.0.120:9200/simple_example" -H 'Content-Type: application/json' -d'
{"settings": {"analysis": {"analyzer": {"rebuilt_simple": {"tokenizer": "lowercase","filter": [         ]}}}}
}

2.1.  Whitespace Analyzer

whitespace 分析器,当它遇到空白字符时,就将文本解析成terms

示例:

curl -X POST "192.168.0.120:9200/_analyze" -H 'Content-Type: application/json' -d'
{"analyzer": "whitespace","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog\u0027s bone."
}

输出结果如下:

[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]

2.2.  Stop Analyzer(停止词分析器)

stop 分析器 和 simple 分析器很像,唯一不同的是,stop 分析器增加了对删除停止词的支持。默认用的停止词是 _englisht_

(PS:意思是,假设有一句话“this is a apple”,并且假设“this” 和 “is”都是停止词,那么用simple的话输出会是[ this , is , a , apple ],而用stop输出的结果会是[ a , apple ],到这里就看出二者的区别了,stop 不会输出停止词,也就是说它不认为停止词是一个term)

(PS:所谓的停止词,可以理解为分隔符)

示例

curl -X POST "192.168.0.120:9200/_analyze" -H 'Content-Type: application/json' -d'
{"analyzer": "stop","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog\u0027s bone."
}

输出

[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]

2.3  配置

stop 接受以下参数:

  • stopwords  :  一个预定义的停止词列表(比如,_englisht_)或者是一个包含停止词的列表。默认是 _english_
  • stopwords_path  :  包含停止词的文件路径。这个路径是相对于Elasticsearch的config目录的一个路径

2.3.1  示例配置

curl -X PUT "192.168.0.120:9200/my_index" -H 'Content-Type: application/json' -d'
{"settings": {"analysis": {"analyzer": {"my_stop_analyzer": {"type": "stop","stopwords": ["the", "over"]}}}}
}
上面配置了一个stop分析器,它的停止词有两个:the 和 over
curl -X POST "192.168.0.120:9200/my_index/_analyze" -H 'Content-Type: application/json' -d'
{"analyzer": "my_stop_analyzer","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog\u0027s bone."
}

基于以上配置,这个请求输入会是这样的:

[ quick, brown, foxes, jumped, lazy, dog, s, bone ]

2.4.  Pattern Analyzer

Java正则表达式来将文本分割成terms,默认的正则表达式是\W+(非单词字符)

2.6.1.  示例

curl -X POST "192.168.0.120:9200/_analyze" -H 'Content-Type: application/json' -d'
{"analyzer": "pattern","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog\u0027s bone."
}

由于默认按照非单词字符分割,因此输出会是这样的:

[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]

2.4.1.  配置

pattern 分析器接受如下参数:

  • pattern  :  一个Java正则表达式,默认 \W+
  • flags  :  Java正则表达式flags。比如:CASE_INSENSITIVE 、COMMENTS
  • lowercase  :  是否将terms全部转成小写。默认true
  • stopwords  :  一个预定义的停止词列表,或者包含停止词的一个列表。默认是 _none_
  • stopwords_path  :  停止词文件路径

2.4.2.  示例配置

curl -X PUT "192.168.0.120:9200/my_index" -H 'Content-Type: application/json' -d'
{"settings": {"analysis": {"analyzer": {"my_email_analyzer": {"type":      "pattern","pattern":   "\\W|_", "lowercase": true}}}}
}

上面的例子中配置了按照非单词字符或者下划线分割,并且输出的term都是小写

curl -X POST "192.168.0.120:9200/my_index/_analyze" -H 'Content-Type: application/json' -d'
{"analyzer": "my_email_analyzer","text": "John_Smith@foo-bar.com"
}

因此,基于以上配置,本例输出如下:

[ john, smith, foo, bar, com ]

2.5.  Language Analyzers

支持不同语言环境下的文本分析。内置(预定义)的语言有:arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, cjk, czech, danish, dutch, english, finnish, french, galician, german, greek, hindi, hungarian, indonesian, irish, italian, latvian, lithuanian, norwegian, persian, portuguese, romanian, russian, sorani, spanish, swedish, turkish, thai

2.6.  自定义Analyzer

前面也说过,一个分析器由三部分构成:

  • zero or more character filters
  • a tokenizer
  • zero or more token filters

2.6.1.  实例配置

curl -X PUT "192.168.0.120:9200/my_index" -H 'Content-Type: application/json' -d'
{"settings": {"analysis": {"analyzer": {"my_custom_analyzer": {"type":      "custom", "tokenizer": "standard","char_filter": ["html_strip"],"filter": ["lowercase","asciifolding"]}}}}
}

3.  Tokenizer

3.1.  Standard Tokenizer

curl -X POST "192.168.0.120:9200/_analyze" -H 'Content-Type: application/json' -d'
{"tokenizer": "standard","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog\u0027s bone."
}
'

Elasticsearch 自定义分析器Analyzer相关推荐

  1. ElasticSearch自定义分析器(custom analyzer)

    基于elasticsearch7.6.1 和 kibana7.6.1 一.基础知识 一个完整的分析器Analyzer包括如下三个组件: Character Filters: 对文本信息就行预处理,比如 ...

  2. es - elasticsearch 自定义分析器 - 内建分词过滤器 - 11

    世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. 自定义分析器 : Character filters :     1. 作用 : 字符的增.删.改转换      ...

  3. es - elasticsearch自定义分析器 - 内建分词过滤器 - 10

    世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. 自定义分析器 : Character filters :     1. 作用 : 字符的增.删.改转换      ...

  4. Elasticsearch –使用模式替换过滤器和自定义分析器忽略查询中的特殊字符

    使用Elasticsearch 5,我们有一个字段,例如驾驶执照编号,其中的值可能包含特殊字符,并且由于用户在有限的验证范围内输入了值,因此值的大小写不一致. 例如,这些是假设值: CA-123-45 ...

  5. Elasticsearch:通过结合 Elasticsearch 词干分析器和同义词来提高搜索相关性

    在之前的博客中,我们介绍了如何将同义词合并到由 Elasticsearch 驱动的应用程序中. 在这里,我以该博客为基础,展示了如何结合词干分析器(stemmer)和多词同义词(multi-word ...

  6. Elasticsearch:分析器中的 character filter 介绍

    Character filter,也即字符过滤器用于在将字符流传递给分词器(tokenizer)之前对其进行预处理.字符过滤器将原始文本作为字符流接收,并可以通过添加.删除或更改字符来转换流. 例如, ...

  7. 【Es】ElasticSearch 自定义分词器

    1.分词器 转载:https://blog.csdn.net/gwd1154978352/article/details/83343933 分词器首先看文章:[Elasticsearch]Elasti ...

  8. ES之分析器(Analyzer)

    ES-分词器(Analyzer) 把输入的文本块按照一定的策略进行分解,并建立倒排索引.在Lucene的架构中,这个过程由分析器(analyzer)完成. 主要组成 character filter: ...

  9. Elasticsearch 自定义分词同义词环节的这个细节不大好理解......

    1.问题引出 球友认证考试前一天晚上提问: 扩展背景描述: 这是 Elasticsearch 自定义分词 Text analysis 章节 Token filter reference 小节的 同义词 ...

最新文章

  1. CentOS7.4-btrfs管理及使用
  2. python中提供怎样的内置库、可以用来创建用户界面_Python程序设计案例课堂第二篇核心技术第十章图形用户界面...
  3. js一个典型的对象写法,推荐使用这种格式,用于处理图像的基本方法、
  4. Java守护线程概述
  5. 微课与计算机技术的论文,微课在高校计算机教学的运用论文
  6. ZZULIOJ 1090: 整数幂(多实例测试)
  7. YII 框架使用之——创建应用
  8. Tomcat如果默认8080被占用修改端口号和查询端口号地址
  9. 接口自动化测试框架搭建(3、excel的设计excel文件的读取)--python+HTMLTestRunnerCN+request+unittest+mock+db
  10. 树莓派写入SD卡时在内存卡格式化之后仍然不能写入.img文件提示 Error 5:拒绝访问的解决办法
  11. 金融数据中心建设模式浅析
  12. 2018永洪科技大数据技术上海峰会-唤醒数据.遇见未来
  13. PHP中使用gRPC客户端
  14. android 视频通话窗口切换,仿微信视频通话大小视图切换(SurfaceView实现)
  15. 苹果cms怎么上传本地视频资源
  16. excel mysql数据同步_将 Excel 数据导入 MySql
  17. 汇编语言:AX、BX、CX、DX寄存器知识点梳理
  18. 成为职业游戏建模师该如何学习?
  19. cad快捷图标中的启动参数
  20. 基于C语言设计的学籍管理系统

热门文章

  1. android sqlite 示例,android SQLite数据库使用示例
  2. mysql 中varchar_MYSQL中VARCHAR和CHAR类型
  3. MATLAB求线性代数的参数范围,MATLAB科学计算04(线性代数问题求解一)
  4. 语言线性拟合线对称_文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归...
  5. python自动控制程序_巧用 python 脚本控制你的C程序
  6. python list,str的拼接与转换
  7. 【第九课】MriaDB密码重置和慢查询日志
  8. React 点击按钮显示div与隐藏div
  9. pmd 设置默认规则,只要使用了该规则集就自动使用
  10. PyCharm安装与配置,python的Hello World