关于后端:es笔记四之中文分词插件安装与使用

46次阅读

共计 1482 个字符,预计需要花费 4 分钟才能阅读完成。

本文首发于公众号:Hunter 后端
原文链接:es 笔记四之中文分词插件装置与应用

后面咱们介绍的操作及演示都是基于英语单词的分词,但咱们大部分应用的必定都是中文,所以如果须要应用分词的操作必定也是须要应用中分分词。

这里咱们介绍一下如何装置中文分词插件。

在介绍装置之前,咱们能够先来测试一下没有中文分词的分词成果,咱们先来插入一条数据:

PUT /exam/_doc/16
{
    "name" : "张三丰",
    "address": "一个苹果"
}

如果是中文分词,咱们能够想到 ‘ 一个苹果 ’ 应该会被分为 ‘ 一个 ’ 和 ‘ 苹果 ’ 这两个词,然而默认的分词是无奈这样分词的,咱们能够尝试搜寻一下:

GET /exam/_search
{
  "query": {
    "term": {"address": "一个"}
  }
}

能够发现是无奈搜寻到后果的。

咱们能够查看一下这条数据的 address 字段被分词的后果:

GET /exam/_doc/16/_termvectors?fields=address

其中,_doc 前面的 16 是咱们要查问的数据的 id,fields 前面跟着的要查看的分词后果的字段名。

能够看到 一个苹果 这个字符串,被挨个分成了四个。

而后咱们来装置一下中文分词的插件。

装置中文分词插件

在 elasticsearch 装置的目录下,执行上面的语句:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip

这里咱们装置的是 7.6.0 版本的 es,所以装置对应的分词插件。

而后咱们从新建设这个 index,为 address 字段加上指定的分词插件:

挨个执行上面的命令:

DELETE /exam/

PUT /exam

PUT /exam/_mapping
{
  "properties": {
    "address": {
      "type": "text",
      "analyzer": "ik_max_word",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    },
    "name": {"type": "keyword"}
  }
}

这里,和第一次创立 mapping 的时候比,多了一行 analyzer 的定义。

而后咱们再次反复下面的插入和查问操作:

PUT /exam/_doc/16
{
    "name" : "张三丰",
    "address": "一个苹果"
}

GET /exam/_search
{
  "query": {
    "term": {"address": "一个"}
  }
}

能够看到,这次咱们搜寻 一个,就能够查问到数据了。

而后咱们看下这条数据的 address 的分词后果:

GET /exam/_doc/16/_termvectors?fields=address

能够看到,这次返回的后果除了独自的 ‘ 一 ’ 和 ‘ 个 ’ 之外,还有被分成整体的 ‘ 一个 ’ 和 ‘ 苹果 ’。

查看分词后果

这里额定介绍一下如何查看字符串的分词。

如果咱们有一个字符串,想要晓得它会被如何分词,能够间接应用上面的命令:

POST /_analyze
{
  "analyzer": "ik_smart",
  "text": "一个苹果"
}

其中,analyzer 是指定的分词的插件,如果不指定就会应用默认的分词性能。

中文分词插件的 github 地址如下:https://github.com/medcl/elasticsearch-analysis-ik

如果想获取更多后端相干文章,可扫码关注浏览:

正文完
 0