Elasticsearch学习笔记4: 分词和中文分词

分析器:

分析器作用是将指定字符串处理成多个单个的词条,创建倒排索引。当索引数据时,分析器会将对应的数据处理分词后,创建倒排索引,当搜索时,将待搜索的字符串处理成词条,再去倒排索引中搜索对应的文档。

分析器包含如下三个:

字符过滤器

    首先,字符串按顺序通过每个 字符过滤器 。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 `and`。

分词器

    其次,字符串被 分词器 分为单个的词条。一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条。

Token 过滤器

    最后,词条按顺序通过每个 token 过滤器 。这个过程可能会改变词条(例如,小写化 Quick ),删除词条(例如, 像 a`, `and`, `the 等无用词),或者增加词条(例如,像 jump 和 leap 这种同义词)

测试分析器:

GET /_analyze
{
  "analyzer": "standard", # 分析器
  "text": "Text to analyze" # 待分析的词
}

通过设置_mapping中的properties, 可以设置对应全文域字段的分析器

{
    "tweet": {
        "type":     "text",
        "analyzer": "english"
    }
}

如上就是设置tweet字段的分析器为english

中文分词

当我们处理的是中文时,需要设置中文分词器。

使用ik分词,需要安装elasticsearch-analysis-ik elasticsearch-analysis-ik的github地址: https://github.com/medcl/elasticsearch-analysis-ik

当时es版本为5.6.3, 通过文档得知,可以直接在elasticsearch安装目录下执行:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.3/elasticsearch-analysis-ik-5.6.3.zip

安装成功后,就可以使用中文分词器

我们在设置_mapping时,可以指定字段的analyzer为ik_smart 或ik_max_word

{
    "tweet": {
        "type":     "text",
        "analyzer": "ik_smart"
    }
}

也可以通过_analyze进行测试分词结果

猜你喜欢

转载自my.oschina.net/u/2299936/blog/1569925