zoukankan      html  css  js  c++  java
  • ElasticSearch中使用IK分词器

    IK分词器是es的一个插件。我们知道只有通过适当的分词,才能查询到有意义的内容。例如:搜索“你好寒冰之光”,我们希望包含“你好”、“寒冰之光”的内容被搜索出来,而不是把所有包含“你”、“好”、“寒”、“冰”、“之”、“光”的内容都搜素出来,因为只有搜索所有意义的词,才是正确的。分词器就是来做分词的,而IK是咱们中国人开发的分词器,也是目前最流行的分词器。

    1、到github上下载最新的IK分词器:https://github.com/medcl/elasticsearch-analysis-ik

    2、将zip文件解压缩到es的plugins目录即可,改个名叫ik:

      

     3、config目录下保存的就是全部的分词配置,随便打开一个.dic文件看看,你会发现里面保存的内容其实就是我们认为有意义的词,得有好几十万个:

      

    4、重启一下es,让它加载ik。访问http://localhost:9100/,我们通过elasticsearch-head来搜索一下试试。我们来搜索“你好寒冰之光”这句话,看看它会怎么分词。在查询框里输入http://localhost:9200/_analyze/,表示我们要做一下分析;post内容输入{"analyzer":"ik_smart","text":"你好寒冰之光"},表示分析使用ik_smart(聪明分词方式,还有一种是ik_max_word,表示最大化分词,即尽可能把词语分拆得很细)。要分析的内容是“你好寒冰之光”。提交请求:

      

      我们发现ik返回的分词结果是“你好”、“寒冰”、“之光”。这说明它没有把“寒冰之光”当成是一个有意义的词。我想大家都想到了,因为我们就没有把“寒冰之光”这个词定义出来,所以ik当然就不知道了。那么,我们来试着自定义一下:

    5、在config目录下,新建一个文件custom.dic(名字可以自己指定)。我们把“寒冰之光”几个字放进去,保存。

      

     6、修改配置文件IKAnalyzer.cfg.xml,把我们自定义的文件配置上:

      

     7、重启es,我们再试试:

      

      这次发现ik返回的词条是“你好”、“寒冰之光”。说明它已经知道“寒冰之光”是一个词了。

    8、我们再来看看ik_max_word模式下,ik会怎样分词:

      

      可以看到分成了4个词语。这两种模式下,分词的策略是不同的,具体用哪种,取决于我们自己的需要。

  • 相关阅读:
    11.【nuxt起步】-登录验证
    10.【nuxt起步】-引用mintui
    9.【nuxt起步】-scroll分页加载
    8.【nuxt起步】-vue组件之间数据交互
    7.【nuxt起步】-Nuxt与后端数据交互
    6.【nuxt起步】-完成一个静态的页面
    5.【nuxt起步】-swiper组件
    4.【nuxt起步】-具体练习一个h5实例
    3.【nuxt起步】-下面以一个SPA单页程序为例子
    2.【nuxt起步】-初始化创建nuxt项目
  • 原文地址:https://www.cnblogs.com/coldlight/p/12048780.html
Copyright © 2011-2022 走看看