Elasticsearch7.8.0版本进阶——文档分析 & 分析器

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch7.8.0版本进阶——文档分析 & 分析器相关的知识,希望对你有一定的参考价值。

目录

一、文档分析过程

  • 将一块文本分成适合于倒排索引的独立的词条
  • 将这些词条统一化为标准格式以提高它们的“可搜索性”,或者 recall分析器执行上面的工作。

二、分析器

分析器实际上是将三个功能封装到了一个包里

  • 字符过滤器
    首先,字符串按顺序通过每个 字符过滤器 。他们的任务是在分词前整理字符串。一个
    字符过滤器可以用来去掉 html,或者将 & 转化成 and。
  • 分词器
    其次,字符串被 分词器 分为单个的词条。一个简单的分词器遇到空格和标点的时候,
    可能会将文本拆分成词条。
  • Token 过滤器
    最后,词条按顺序通过每个 token 过滤器 。这个过程可能会改变词条(例如,小写化
    Quick ),删除词条(例如, 像 a, and, the 等无用词),或者增加词条(例如,像 jump
    和 leap 这种同义词)。

三、内置分析器

Elasticsearch 还附带了可以直接使用的预包装的分析器。接下来我们会列出最重要的分
析器。为了证明它们的差异,我们看看每个分析器会从下面的字符串得到哪些词条:

"Set the shape to semi-transparent by calling set_trans(5)"

3.1、标准分析器

  • 标准分析器是 Elasticsearch 默认使用的分析器。它是分析各种语言文本最常用的选择。它根据 Unicode 联盟 定义的 单词边界 划分文本。删除绝大部分标点。最后,将词条小写。它会产生:

    set, the, shape, to, semi, transparent, by, calling, set_trans, 5
    

3.2、简单分析器

  • 简单分析器在任何不是字母的地方分隔文本,将词条小写。它会产生:

    set, the, shape, to, semi, transparent, by, calling, set, trans
    

3.3、空格分析器

  • 空格分析器在空格的地方划分文本。它会产生:

    Set, the, shape, to, semi-transparent, by, calling, set_trans(5)
    

3.4、语言分析器

  • 特定语言分析器可用于 很多语言。它们可以考虑指定语言的特点。例如:英语分析器附带了一组英语无用词(常用单词,例如 and 或者 the ,它们对相关性没有多少影响),它们会被删除。英语 分词器会产生下面的词条:

    set, shape, semi, transpar, call, set_tran, 5
    

    注意:transparent、 calling 和 set_trans 已经变为词根格式。

四、分析器使用场景

当我们 索引 一个文档,它的全文域被分析成词条以用来创建倒排索引。 但是,当我们在全文域 搜索 的时候,我们需要将查询字符串通过 相同的分析过程 ,以保证我们搜索的词条格式与索引中的词条格式一致。

全文查询,理解每个域是如何定义的,因此它们可以做正确的事:

  • 当你查询一个 全文 域时, 会对查询字符串应用相同的分析器,以产生正确的搜索词条列表。
  • 当你查询一个 精确值 域时,不会分析查询字符串,而是搜索你指定的精确值。

五、分析器的测试示例

  • 启动es服务,在消息体里,指定分析器和要分析的文本

    GET http://localhost:9200/_analyze
    
    "analyzer": "standard",
    "text": "Text to analyze"
    
    

  • 输出结果如下:每个元素代表一个单独的词条。

  • 输出结果的解释

    输出结果key输出结果key的解释
    token实际存储到索引中的词条
    start_offset字符在原始字符串中的开始位置
    end_offset字符在原始字符串中的结束位置
    position词条在原始文本中出现的位置

以上是关于Elasticsearch7.8.0版本进阶——文档分析 & 分析器的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch7.8.0版本进阶——倒排索引

Elasticsearch7.8.0版本进阶——近实时搜索

Elasticsearch7.8.0版本进阶——分片控制

Elasticsearch7.8.0版本进阶——分布式集群(故障转移)

Elasticsearch7.8.0版本进阶——持久化变更

Elasticsearch7.8.0版本进阶——数据更新流程