Elasticsearch 认识分词(1)

一.概述

  分词是构建倒排索引的重要一环。根据语言不同可以分为英文分词、中文分词等;根据分词实现的不同又分为标准分词器、空格分词器、停用词分词器等。在传统的分词器不能解决特定业务场景的问题时,往往需要自定义分词器。

  1.1认识分词

    对于分词操作来说,英语单词分词相对简单,因为单词之间都会以空格或者标点隔开,举例如下

  A man can be destroyed,but not defeated.
  a /man/can/be/destroyed /but /not/defeated(正确)  

     而中文在单词、句子甚至段落之间没有空格, 分词比较复杂

  内塔尼亚胡说的确实在理

  内塔尼亚胡 /说 /的确 /实在 /理(错误)
  内塔尼亚 /胡说 /的 /确实 /在理(错误)
  内塔尼亚胡 /说的 /确实 /在理(正确)

  1.2 什么时候需要分词

    用户需要进行模糊搜索的场景,通过“搜索词”搜索出关联的文档数据,特别是在大数据量,要求搜索快速响应等情况下使用分词, 分词后存储为倒排索引结构的倒排文件, 通过倒排索引快速检索出相关文档。

  1.3 分词发生的阶段

     前提条件:只有文档中的text类型字段才会进行分词,es默认分词器是:standard分词器。

    1)在写入数据时(数据索引化过程),使用分词器进行分词,将分词存储为倒排索引。

    2)在搜索数据时(检索过程),通过“搜索词”进行分词找到相应文档。

   1.4 分析器(analyzer)组成

    文档在写入并转换为倒排索引前,通过es内置分析器(analyzer)或自定义分析器进行分析实现,analyzer由三个部分组成:

    1)charactcr filter 字符过滤器。

    2)  tokenizer 分词器,将文本切分为单个单词 term。

      3)token filter 令牌过滤器,分词后再过滤。

    1个analyzer包括: 0或多个charactcr filter、1个tokenizer 、 0或多个token filter。

 

参考资料:一本书讲透Elasticsearch

 

posted on 2024-04-07 17:24  花阴偷移  阅读(25)  评论(0编辑  收藏  举报

导航