ElasticSearch Analyzer

Analysis【分析,动词】表示将文本处理转换为一系列短语的过程,这个过程有两处会用到:

  • 建立倒排索引:数据写入时,Analyzer【分词器,名词】会将数据解析成多个短语【英文文档中叫做tokens or terms】,用这些短语建立倒排索引;

  • 查询:查询时,分词器将查询条件解析成多个短语从倒排索引中查询数据;

ES 预置了很多分词器,很遗憾,没有中文分词器,由于笔者也是刚开始探索,暂不深入研究。

  1. 可以设置全局默认分词器
  1. 也可以在定义Document【可以理解为数据类型,对应RDB中的表】时指定,以上两处的分词器可以相同【参数analyzer】,也可以分别指定【参数search_analyzer
  1. 查询分析器可以在查询语句中指定

以上分析器在使用时,优先级依次提高;

Analysis 由多个过程组成,ES 用Character filter,Tokenizer,Token filter 封装了这些过程,这三个概念在 ES 中是比 Analyzer 更低一层的概念。

Character filter [pre process]

字符过滤器接收原始的输入并做一些字符添加、替换、删除操作,比如 HTML 中的转义字符需要替换为实际字符;一个分词器中可以有零至多个字符过滤器,多个过滤器按顺序执行;

Tokenizer [process]

短语分割器将字符过滤处理完的数据流,并将其分割为独立的短语,输出 token 流数据。比如空格分割器,将文本"Quick brown fox!" 分割为 [quick, brown, fox!]

Token filter [post process]

短语过滤器对上一步的短语流做一些添加、替换、删除操作,比如一些虚词 a, the, and 等,对分析没有太大的影响,可以将其去掉。

你可能感兴趣的:(ElasticSearch Analyzer)