当前位置: 首页 > news >正文

Elasticsearch 6.8 分析器

在 Elasticsearch 中,分析器(Analyzer)是文本分析过程中的一个关键组件,它负责将原始文本转换为一组词汇单元(tokens)。

分析器由三个主要部分组成:分词器(Tokenizer)、过滤器(Token Filters)、和字符过滤器(Character Filters)。这些组件共同作用,以确保文本数据被正确索引和搜索。

组成部分

1、字符过滤器(Character Filters)

在分词之前对文本进行预处理。

可以用于去除或替换特定字符或字符序列。

示例:HTML Strip Filter,用于去除 HTML 标签。

2、分词器(Tokenizer)

将文本分割成基本的词汇单元。

决定了词汇单元的边界。

示例:Standard Tokenizer、Whitespace Tokenizer。

3、过滤器(Token Filters)

在分词之后对词汇单元进行进一步处理。

用于转换、删除或修改词汇单元。

示例:Lowercase Filter、Stop Filter、Synonym Filter。

常见分析器类型

1、Standard Analyzer

默认分析器,使用 Standard Tokenizer 和一组默认的过滤器(如小写过滤器)。

适用于大多数语言的通用文本处理。

2、Simple Analyzer

使用 Lowercase Tokenizer,将文本分割为小写的单词。

适用于简单的文本处理需求。

3、Whitespace Analyzer

仅使用 Whitespace Tokenizer,通过空格分割词汇单元。

不进行任何字符转换。

4、Stop Analyzer

类似于 Simple Analyzer,但会去除常见的停用词。

5、Keyword Analyzer

将整个输入作为单个词汇单元返回。

适用于精确匹配的场景。

6、Custom Analyzer

用户可以根据需要自定义分析器,组合不同的字符过滤器、分词器和词汇过滤器。

自定义分析器示例

以下是如何创建一个自定义分析器的示例,该分析器使用 Whitespace Tokenizer,并将所有词汇单元转换为小写,同时去除停用词:

PUT /my_index
{"settings": {"analysis": {"analyzer": {"my_custom_analyzer": {"type": "custom","tokenizer": "whitespace","filter": ["lowercase","stop"]}}}}
}

使用分析器进行文本分析

创建索引并定义分析器后,可以使用 _analyze API 来查看分析器的效果:

POST /my_index/_analyze
{"analyzer": "my_custom_analyzer","text": "The quick brown fox jumps over the lazy dog"
}

输出

{"tokens": [{"token": "quick", "start_offset": 4, "end_offset": 9, "type": "word", "position": 1},{"token": "brown", "start_offset": 10, "end_offset": 15, "type": "word", "position": 2},{"token": "fox", "start_offset": 16, "end_offset": 19, "type": "word", "position": 3},{"token": "jumps", "start_offset": 20, "end_offset": 25, "type": "word", "position": 4},{"token": "lazy", "start_offset": 35, "end_offset": 39, "type": "word", "position": 7},{"token": "dog", "start_offset": 40, "end_offset": 43, "type": "word", "position": 8}]
}

通过选择和配置合适的分析器,你可以优化文本数据的索引和搜索性能,以满足特定应用需求。分析器的灵活性允许你处理各种语言和文本格式,确保搜索结果的准确性和相关性。

http://www.lryc.cn/news/488626.html

相关文章:

  • 实验室资源调度系统:基于Spring Boot的创新
  • 实验三:构建园区网(静态路由)
  • 3. SQL优化
  • web——upload-labs——第十一关——黑名单验证,双写绕过
  • AWS CLI
  • springboot:责任链模式实现多级校验
  • CentO7安装单节点Redis服务
  • FreeRTOS学习14——时间管理
  • 统⼀数据返回格式快速⼊⻔
  • Python学习------第十天
  • Win11 24H2新BUG或影响30%CPU性能,修复方法在这里
  • element ui 走马灯一页展示多个数据实现
  • 40分钟学 Go 语言高并发:Goroutine基础与原理
  • Figma插件指南:12款提升设计生产力的插件
  • 【K8S系列】Kubernetes集群资源管理与调度 深度分析
  • delphi fmx android 离线人脸识别
  • Linux mountpoint 命令详解
  • Linux驱动开发(9):pinctrl子系统和gpio子系统--led实验
  • 用sqlmap工具打sqli-labs前20关靶场
  • 代码随想录算法训练营第二十一天 | 93.复原IP地址 | 78.子集
  • #Uniapp篇:支持纯血鸿蒙发布适配UIUI
  • 边缘提取函数 [OPENCV--2]
  • 插值原理(数值计算方法)
  • 【Pikachu】SSRF(Server-Side Request Forgery)服务器端请求伪造实战
  • IDEA怎么定位java类所用maven依赖版本及引用位置
  • Discuz论坛网站管理员的默认用户名admin怎么修改啊?
  • BIO、NIO、AIO的区别?
  • 音视频入门基础:MPEG2-TS专题(7)——FFmpeg源码中,读取出一个transport packet数据的实现
  • Flutter中sqflite的使用案例
  • 【2024 Optimal Control 16-745】【Lecture 2】integrators.ipynb功能分析