中文分词器的使用

中文分词器的使用

  • ik_max_word:会将文本做最细粒度的拆分
  • ik_smart:做最粗粒度的拆分

查询

  • 自动映射默认使用的标准的分词器,如果想要使用IK中文分词器,那么需要手动创建映射,如下:
PUT /lib 
{
    "mappings" : {
        "user" : {
            "properties" : {
                "userId" : {
                    "type" : "integer"
                },
                "date":{
                  "type": "date",
                  "format": "yyyy-MM-dd HH:mm:ss"
                },
                "age":{
                  "type": "integer"
                },
                "name":{
                  "type": "text", 
                   "analyzer": "ik_max_word"   //使用IK分词器
                },
                "address":{
                  "type": "text",
                  "analyzer": "ik_max_word"   //使用IK分词器
                }
            }
        }
    }
}
  • 添加数据
PUT /lib/user/1
{
  "name":"陈加兵",
  "age":22,
  "date":"2012-11-11 12:00:00",
  "address":"上海市松江区"
}
PUT /lib/user/2
{
  "name":"郑元梅",
  "age":22,
  "date":"2012-11-11 12:00:00",
  "address":"湖北武汉"
}
PUT /lib/user/3
{
  "name":"张三",
  "age":22,
  "date":"2012-11-11 12:00:00",
  "address":"江苏省淮安市"
}
  • 我们可以查看address这个字段使用中文分词器的效果,如下:
GET lib/_analyze
{
  "field": "address",
  "text": "江苏省淮安市"
}
//分词结果如下:
{
  "tokens": [
    {
      "token": "江苏省",
      "start_offset": 0,
      "end_offset": 3,
      "type": "CN_WORD",
      "position": 0
    },
    {
      "token": "江苏",
      "start_offset": 0,
      "end_offset": 2,
      "type": "CN_WORD",
      "position": 1
    },
    {
      "token": "省",
      "start_offset": 2,
      "end_offset": 3,
      "type": "CN_CHAR",
      "position": 2
    },
    {
      "token": "淮安市",
      "start_offset": 3,
      "end_offset": 6,
      "type": "CN_WORD",
      "position": 3
    },
    {
      "token": "淮安",
      "start_offset": 3,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 4
    },
    {
      "token": "市",
      "start_offset": 5,
      "end_offset": 6,
      "type": "CN_CHAR",
      "position": 5
    }
  ]
}
  • 通过上面的分词,我们可以进行查询了,如下:
GET /lib/user/_search
{
  "query": {
    "match": {
      "address": "江苏"
    }
  }
}
GET /lib/user/_search
{
  "query": {
    "match": {
      "address": "淮安"
    }
  }
}
GET /lib/user/_search
{
  "query": {
    "term": {
      "address": "淮安"
    }
  }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

undo retention的思考(一)

最近有个网友咨询我一个问题,是关于undo_retention的,对于这个参数没有过多关注,只是知道需要设置undo_retention搭配使用undotabl...

4525
来自专栏大数据和云计算技术

Hive 元数据表结构详解

元数据是基础,这篇文章值得一读。 本文介绍Hive元数据库中一些重要的表结构及用途,方便Impala、SparkSQL、Hive等组件访问元数据库的理解。 1、...

5775
来自专栏逸鹏说道

SQL Server 重新组织生成索引

概述 无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库...

3638
来自专栏漫漫全栈路

Oracle 学习笔记

前言 本贴内容纪录Oracle课程中的学习笔记,和Oracle的课后作业,以及数据库相关课程的学习笔记,笔记部分使用实例代码记录,不记详细语法。 用户管理...

3465
来自专栏杨建荣的学习笔记

物化视图刷新的问题及分析(61天)

最近现场需要搭建一套全新的环境,对于数据字典的管理采用了物化视图,因为数据量不大,采用了全量刷新的方式。因为有好几套环境,有几套环境是通过db link和主节点...

3837
来自专栏熊二哥

那些年我们写过的T-SQL(下篇)

下篇的内容很多都会在工作中用到,尤其是可编程对象,那些年我们写过的存储过程,有木有?到目前为止很多大型传统企业仍然很依赖存储过程。这部分主要难理解的部分是事务和...

2195
来自专栏数据库

oracle常用命令大全

一、Oracle数据库实例、用户、目录及session会话查看: 1、ORACLE SID查看设置 查看SID、用户名 $ env|grep SID 、sele...

4347
来自专栏乐沙弥的世界

Oracle datapump expdp/impdp 导入导出数据库时hang住

   最近在导出schema级别的数据时被hang住,不得不停止当前的导出作业,如果你有类似的问题,请继续往下看。 1、问题描述     导出整个schem...

1332
来自专栏码云1024

sql 复习练习

4326
来自专栏乐沙弥的世界

使用FREDATED引擎实现跨实例访问

    跨数据库服务器,跨实例访问是比较常见的一种访问方式,在Oracle中可以通过DB LINK的方式来实现。对于MySQL而言,有一个FEDERATED存储...

1431

扫码关注云+社区

领取腾讯云代金券