美文网首页
ES自定义分词器

ES自定义分词器

作者: byamao1 | 来源:发表于2018-11-12 17:38 被阅读0次

    es的分词器往往包括3个低级构建块包:

    • character filters - 字符过滤器,可以添加、删除或更改字符来转换流,一个分析器可有多个字符过滤器;
    • token filters - token过滤器,接受token流,并可以添加、删除或修改token,不允许更改每个token的位置或字符偏移量,一个分析器可有多个token过滤器,并按顺序应用。
    • tokenizer - 标记器,接受字符流,将其分解成单独的标记,并输出标记流,一个分析器只能有一个标记器

    Elasticsearch提供的内置analyzers

    Standard Analyzer
    标准分析仪按照Unicode文本分段算法的定义,将文本分割成单词边界的分词。它删除了大多数标点符号,小写显示分词,并支持删除stop words。

    Simple Analyzer
    当遇到不是字母的字符时,简单的分析器会将文本分成条目。小写显示分词。

    Whitespace Analyzer
    空格分析器遇到任何空格字符时都会将文本分为多个项目。不会把分词转换为小写字母。

    Stop Analyzer
    停止分析仪和Simple Analyzer类似,但也支持stop words的删除。

    Keyword Analyzer
    一个“noop”分析器,它可以接受任何给定的文本,并输出完全相同的文本作为一个单词。

    Pattern Analyzer
    使用正则表达式拆分分词,支持lower-casing和stop words。

    Language Analyzers
    Elasticsearch提供许多语言特定的分析器,如英语或法语。

    Fingerprint Analyzer
    一个专门的分析仪,它可以创建一个可用于重复检测的指纹。

    https://www.jianshu.com/p/13112fe5eaad

    实战

    对中文文本以英文逗号作为分隔符分词:

    "这里有,最棒的ACG氛围,最有创意的Up主"

    将分析器设置到索引上

    PUT my_index
    {
      "settings": {
        "analysis": {
          "analyzer": {
            "my_analyzer": {
              "type": "simple"
            }
          }
        }
      }
    }
    

    获取分词结果

    POST my_index/_analyze
    {
      "analyzer": "my_analyzer",
      "text": "这里有,最棒的ACG氛围,最有创意的Up主"
    }
    

    https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stop-analyzer.html

    注意

    es 节点层面的默认分词设置已经废弃,不支持了。就是说在elasticsearch.yml配置诸如:

    index:
      analysis:                  
        analyzer:
          simple_analyzer:
            type: simple
    

    无效,会导致es启动失败:

    ********************************************************************************
    *****
    Found index level settings on node level configuration.
    
    Since elasticsearch 5.x index level settings can NOT be set on the nodes
    configuration like the elasticsearch.yaml, in system properties or command line
    
    arguments.In order to upgrade all indices the settings must be updated via the
    /${index}/_settings API. Unless all settings are dynamic all indices must be clo
    sed
    in order to apply the upgradeIndices created in the future should use index temp
    lates
    to set default values.
    

    推荐在索引层面动态设置。
    https://blog.csdn.net/yu280265067/article/details/71107658

    相关文章

      网友评论

          本文标题:ES自定义分词器

          本文链接:https://www.haomeiwen.com/subject/sqicfqtx.html