Elasticsearch分词

Elasticsearch搜索中比较重要的就是分词了,通过分词将内容拆分成不同的关键词,然后通过关键词的匹配度来打分排序选择结果,Elasticsearch默认是支持分词的,但是对中文的分词就可想而知了,所以中文分词需要自行安装差件,推荐IK分词插件。

内置分词

分词器名称说明
Standard Analyzer标准分词器适用于英语等
Simple Analyzer简单分词器于非字母字符进行分词,单词会被转为小写字母
Whitespace Analyzer空格分词器按照空格进行切分
Stop Analyzer简单分词器+停用词类似于简单分词器,但是增加了停用词的功能
Keyword Analyzer关键词分词器输入文本等于输出文本,不会切分
Pattern Analyzer正则分词器利用正则表达式对文本进行切分,支持停用词
Language Analyzer语言分词器针对特定语言的分词器
Fingerprint Analyzer指纹分词器指纹分析仪分词器,通过创建标记进行重复检测

中文分词

安装

  1. 下载
  2. 解压安装到你的es目录/plugins文件夹下
  3. 改名为ik
  4. 扩展词典和自定义词典需修改配置文件ik/config/IKAnalyzer.cfg.xml
  5. 重启elasticsearcch服务

使用

IK提供了两个分词算法:

  • ik_smart为最少切分

    GET _analyze 
    { 
    "analyzer":"ik_smart", 
    "text":"中国农业银行" 
    }

    结果为

    {
    "tokens" : [
      {
        "token" : "中国农业银行",
        "start_offset" : 0,
        "end_offset" : 6,
        "type" : "CN_WORD",
        "position" : 0
      }
    ]
    }
  • ik_max_word为最细粒度划分

    GET _analyze 
    { 
    "analyzer":"ik_max_word", 
    "text":"农业银行" 
    }

    结果为

    {
    "tokens" : [
      {
        "token" : "农业银行",
        "start_offset" : 0,
        "end_offset" : 4,
        "type" : "CN_WORD",
        "position" : 0
      },
      {
        "token" : "农业",
        "start_offset" : 0,
        "end_offset" : 2,
        "type" : "CN_WORD",
        "position" : 1
      },
      {
        "token" : "银行",
        "start_offset" : 2,
        "end_offset" : 4,
        "type" : "CN_WORD",
        "position" : 2
      }
    ]
    }
版权属于:小A 本文链接:https://xiaoa.me/archives/elasticsearch-3.html 转载申明:转载请保留本文转载地址,著作权归作者所有。

评论

没有更多啦