文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于ElasticSearch Analyzer的使用规则是什么

2023-06-05 03:43

关注

本文小编为大家详细介绍“基于ElasticSearch Analyzer的使用规则是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于ElasticSearch Analyzer的使用规则是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

analyzer的使用规则

查询只能查找倒排索引表中真实存在的项, 所以保证文档在索引时与查询字符串在搜索时应用相同的分析过程非常重要,这样查询的项才能够匹配倒排索引中的项。

尽管是在说 文档 ,不过分析器可以由每个字段决定。 每个字段都可以有不同的分析器,既可以通过配置为字段指定分析器,也可以使用更高层的类型(type)、索引(index)或节点(node)的默认配置。在索引时,一个字段值是根据配置或默认分析器分析的。

例如为 my_index 新增一个字段:

PUT /my_index/_mapping/my_type{    "my_type": {        "properties": {            "english_title": {                "type":     "string",                "analyzer": "english"            }        }    }}

现在我们就可以通过使用 analyze API 来分析单词 Foxes ,进而比较 english_title 字段和 title 字段在索引时的分析结果:

GET /my_index/_analyze{"field": "my_type.title","text": "Foxes"} GET /my_index/_analyze{"field": "my_type.english_title","text": "Foxes"}
  1. 字段 title ,使用默认的 standard 标准分析器,返回词项 foxes 。

  2. 字段 english_title ,使用 english 英语分析器,返回词项 fox 。

这意味着,如果使用底层 term 查询精确项 fox 时, english_title 字段会匹配但 title 字段不会。

如同 match 查询这样的高层查询知道字段映射的关系,能为每个被查询的字段应用正确的分析器。 可以使用 validate-query API 查看这个行为:

GET /my_index/my_type/_validate/query?explain{    "query": {        "bool": {            "should": [                { "match": { "title":         "Foxes"}},                { "match": { "english_title": "Foxes"}}            ]        }    }}

返回语句的 explanation 结果:

(title:foxes english_title:fox)

match 查询为每个字段使用合适的分析器,以保证它在寻找每个项时都为该字段使用正确的格式。

默认分析器

虽然我们可以在字段层级指定分析器, 但是如果该层级没有指定任何的分析器,那么我们如何能确定这个字段使用的是哪个分析器呢?

分析器可以从三个层面进行定义:按字段(per-field)、按索引(per-index)或全局缺省(global default)。Elasticsearch 会按照以下顺序依次处理,直到它找到能够使用的分析器。索引时的顺序如下:

在搜索时,顺序有些许不同:

有时,在索引时和搜索时使用不同的分析器是合理的。 我们可能要想为同义词建索引(例如,所有 quick 出现的地方,同时也为 fast 、 rapid 和 speedy 创建索引)。但在搜索时,我们不需要搜索所有的同义词,取而代之的是寻找用户输入的单词是否是 quick 、 fast 、 rapid 或 speedy 。

为了区分,Elasticsearch 也支持一个可选的 search_analyzer 映射,它仅会应用于搜索时( analyzer 还用于索引时)。还有一个等价的 default_search 映射,用以指定索引层的默认配置。

如果考虑到这些额外参数,一个搜索时的 完整 顺序会是下面这样:

Elasticsearch分词(Analyzer)

一、什么是Analysis ?

Analysis 叫做分词,就是将文本转换为一系列单词(term/token)的过程。

Analysis 是通过Analyzer来实现的。

可使用Elasticserach内置的分析器或按需优化分需求或安装分析器插件 。

在数据写入的时候转换词条于Query语句查询的时候也需要用相同的分析器。

二、Analyzer的组成与工作机制

Character Filter 针对原始文本处理,例如去除html。

Tokenizer 按规则切分为单词。Tokenizer Filter将切分的单词进行加工,小写,删除stopwords,增加同义词。

基于ElasticSearch Analyzer的使用规则是什么

三、Elasticserach内置的一些分词器

1) _analyzer API 三种使用方法

基于ElasticSearch Analyzer的使用规则是什么

2) Standard Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

3)Simple Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

4)Whitespace Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

5)Stop Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

6)Keyword Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

7)Pattern Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

8)Language Analyzer

支持按语言分词

基于ElasticSearch Analyzer的使用规则是什么

示例

基于ElasticSearch Analyzer的使用规则是什么

四、中文分词

中文分词的难点:

中文句子,切成一个一个词(不是一个一个字)。英文中,单词有自然的空格作为分隔。一句中文,在不同的上下文,有不同的理解。

1)ICU Analyzer

原理

基于ElasticSearch Analyzer的使用规则是什么

演示(需要提前安装 ICU Analyze 插件)

基于ElasticSearch Analyzer的使用规则是什么

2)IK

基于ElasticSearch Analyzer的使用规则是什么

3) THULAC

基于ElasticSearch Analyzer的使用规则是什么

读到这里,这篇“基于ElasticSearch Analyzer的使用规则是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯