ik分词器

2022-05-13 11:07:08 浏览数 (3)

ik分词器出现的背景: 分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作, 默认的中文分词是将每个字看成一个词,比如"中国的花"会被分为"中","国","的","花",这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。

IK提供了两个分词算法 ik_smart 和 ik_max_word 其中 ik_smart 为最少切分,ik_max_word为最细粒度划分

代码语言:javascript复制
我们分别来试一下 
(1)最小切分:在浏览器地址栏输入地址 
http://127.0.0.1:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是程序员 
输出的结果为:
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,    
      "end_offset" : 1,
      "type" : "CN_CHAR",  
      "position" : 0 
    },
    {
      "token" : "是",
      "start_offset" : 1, 
      "end_offset" : 2,
      "type" : "CN_CHAR",  
      "position" : 1 
    },
    {
      "token" : "程序员",   
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2 
    }
  ]
}
(2)最细切分:在浏览器地址栏输入地址
http://127.0.0.1:9200/_analyze?analyzer=ik_max_word&pretty=true&text=我是程序员
输出的结果为:
{  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0 
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR", 
      "position" : 1 
    },
    {
      "token" : "程序员", 
     "start_offset" : 2, 
     "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2 
    },
    {
      "token" : "程序",
      "start_offset" : 2, 
     "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 3 
    },
    {
      "token" : "员",
      "start_offset" : 4, 
     "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 4 
    }
  ]
}
ik分词器支持自定义词库

默认的分词并没有识别“小明”是一个词。如果我们想让系统识别“小明”是一个词,需要编辑自定义词库。 步骤: (1)进入elasticsearch/plugins/ik/config目录 (2)新建一个my.dic文件,编辑内容: 小明 修改IKAnalyzer.cfg.xml(在ik/config目录下)

代码语言:javascript复制
 <properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!‐‐用户可以在这里配置自己的扩展字典 ‐‐>
    <entry key="ext_dict">my.dic</entry>
     <!‐‐用户可以在这里配置自己的扩展停止词字典‐‐>
    <entry key="ext_stopwords"></entry>
</properties>

重新启动elasticsearch即可

1 人点赞