使用IK分词器

  1. 集成ik分词器 https://mp.csdn.net/postedit/93602713
  2. 实体类PosEntity 
    /** 省略了getter、setter*/
    class PosEntity{private Integer posId;private String posName;private String posAddress;}

    实体类中posName和posAddress都用作中文字段,使用IK分词器

  3. 创建索引

    @Testpublic void createIKIndex(){XContentBuilder contentBuilder = null;try {contentBuilder = XContentFactory.jsonBuilder().startObject().startObject(typeName).startObject("properties").startObject("posId").field("type","integer").endObject().startObject("posName").field("type","text").field("analyzer","ik_max_word").endObject().startObject("posAddress").field("type","text").field("analyzer","ik_max_word").endObject().endObject().endObject().endObject();} catch (IOException e) {e.printStackTrace();}client.admin().indices().prepareCreate(ikIndexName).addMapping(typeName, contentBuilder).get();}
  4. 导入数据

     @Testpublic void loadIKData(){PosEntity entity = new PosEntity(3, "渝B21902321", "中国是世界上人口最多的国家");PosEntity entity1 = new PosEntity(4, "渝A21902321", "今天是你的生日胖头鱼");client.prepareIndex(ikIndexName, typeName, "3").setSource(JSONObject.toJSONString(entity), XContentType.JSON).get();client.prepareIndex(ikIndexName, typeName, "4").setSource(JSONObject.toJSONString(entity1), XContentType.JSON).get();}

    导入的有车牌号和正常的语句。分词情况可以在kibana中

       GET _analyze{"text":"今天是你的生日胖子","analyzer":"ik_max_word"}

    查看。

  5. 搜索操作跟前面类似

      @Testpublic void multiIK(){MultiMatchQueryBuilder queryBuilder = new MultiMatchQueryBuilder("是你的", "posName", "posAddress");SearchRequestBuilder builder = client.prepareSearch(ikIndexName, typeName).setQuery(queryBuilder);execSearch(builder);}@Testpublic void ikStringQuery(){QueryStringQueryBuilder queryStringQueryBuilder = new QueryStringQueryBuilder("posAddress:是你的");SearchRequestBuilder builder = client.prepareSearch(ikIndexName, typeName).setQuery(queryStringQueryBuilder);execSearch(builder);}
    

扩展ik词库

  1. 先用kibana解析“蓝瘦香菇很好吃”这句话

     GET _analyze{"text":"蓝瘦香菇很好吃","analyzer":"ik_max_word"}

    结果如下

    {"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": 4,"type": "CN_WORD","position": 2},{"token": "很好","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 3},{"token": "很","start_offset": 4,"end_offset": 5,"type": "CN_CHAR","position": 4},{"token": "好吃","start_offset": 5,"end_offset": 7,"type": "CN_WORD","position": 5}]
    }

    蓝瘦香菇被未被识别成一个词,,很被识别了。现在让蓝瘦香菇被识别为整体,很作为停词被忽略。

  2. 进入ik配置文件目录 /home/es/elasticsearch-6.2.2/plugins/ik/config,创建一个词典文件

    vim my_extra.dic

    添加蓝瘦香菇 ,保存修改  

  3. 创建一个分词文件 ,添加很 

    vim my_extra.dic
  4. 修改IK配置文件,在添加自定义的文件

    vim IKAnalyzer.cfg.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">my_extra.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">my_stopword.dic</entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    

    分别添加进自己扩展的词库文件和分词文件。

  5. 重启es集群

  6. 重新解析那句话,结果如下

    {"tokens": [{"token": "蓝瘦香菇","start_offset": 0,"end_offset": 4,"type": "CN_WORD","position": 0},{"token": "瘦","start_offset": 1,"end_offset": 2,"type": "CN_CHAR","position": 1},{"token": "香菇","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 2},{"token": "很好","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 3},{"token": "好吃","start_offset": 5,"end_offset": 7,"type": "CN_WORD","position": 4}]
    }

(五)使用IK分词器、扩展ik词库和停词库相关推荐

  1. 安装Kibana、head、IK分词器后IK的使用

    安装Kibana 1 什么是Kibana Kibana是ES提供的一个基于Node.js的管理控制台, 可以很容易实现高级的数据分析和可视化,以图标的形式展现出来. kibana可以用来编辑请求语句的 ...

  2. 腾讯云docker下安装elasticsearch及IK分词器-扩展词-停止词Kibana

    1.拉取 docker pull elasticsearch:7.7.0 2.运行 docker run --name elasticsearch -d -e ES_JAVA_OPTS="- ...

  3. IK分词器扩展词典、停用词典、同义词典

    1.扩展词典         扩展词:就是不想哪些词分开,让他们成为一个词,比如"哈利波特" 自定义扩展词库 进入到elasticsearch的conf/analysis-ik/目 ...

  4. JAVA开源中文分词器Ansj(依赖注入+调用方式+停词器)

    Java有11大开源中文分词器,分别是word分词器,Ansj分词器,Stanford分词器,FudanNLP分词器,Jieba分词器,Jcseg分词器,MMSeg4j分词器,IKAnalyzer分词 ...

  5. Elasticsearch7.15.2 修改IK分词器源码实现基于MySql8的词库热更新

    文章目录 一.源码分析 1. 默认热更新 2. 热更新分析 3. 方法分析 二.词库热更新 2.1. 导入依赖 2.2. 数据库 2.3. JDBC 配置 2.4. 打包配置 2.5. 权限策略 2. ...

  6. IK分词器的安装和扩展词典的使用

    Es中默认的是标准分词器,对于属性类型是text类型的中文语句,进行了单字分词,英文语句是单词分词. 所以在搜索时,如果输入单词搜索,拆分成多个汉字搜索,搜索内容不准确. 故引入更加智能的IK分词器. ...

  7. ik分词器的热词更新_ik与拼音分词器,拓展热词/停止词库

    说明:本篇文章讲述elasticsearch分词器插件的安装,热词库停止词库的拓展,文章后面提到elasticsearch ,都是以es简称. 以下分词器的安装以ik分词器和pinyin分词器为例说明 ...

  8. Elasticsearch——分布式搜索引擎01(索引库、文档、RestAPI、RestClient、拼音分词器、IK分词器)

    Elasticsearch--分布式搜索引擎01(索引库.文档.RestAPI.RestClient.拼音分词器.IK分词器) 一.初识 elesticsearch 1.1 简介 1.2 倒排索引(重 ...

  9. 单机版Solr的中文分词器solr IK下载和配置、拓展词典、停用词典

    下载ik分词器 solr IK中文分词器下载地址 github地址下载(最新版本): https://github.com/magese/ik-analyzer-solr solr7版本的ik分词器: ...

最新文章

  1. OAuth 2.0中的scope和RBAC中的role有什么关系
  2. Safari下弹窗问题的解决办法
  3. C++手写a除以b的正余数
  4. Java“地铁”表(JavaFX)
  5. AlertDialog禁止返回键
  6. 字符串 读取西门子_【必学技能】自己动手——基于C#实现手机APP远程访问西门子PLC...
  7. 犯罪分子正在将合法的云监控工具用作后门
  8. Python排序算法[二]:测试数据的迷雾散去
  9. Samba 共享目录启动mysql
  10. 【刷算法】对称的二叉树
  11. Julia: 如何转换PyPlot的X轴的日期格式?
  12. 【语音分析】基于matlab线性预测系数对比【含Matlab源码 557期】
  13. Sql Server 2008R2 备份文件还原数据库
  14. java插桩-javaassist
  15. 手把手带你将电脑音乐同步到iPhone 音乐
  16. python集成Bartender的雏形
  17. 如何在线无痕去除图片水印
  18. Android电视直播 v5.6,龙龙直播app下载|龙龙直播apk2019官方版下载 v5.6.1 安卓版 - 数码资源网...
  19. 年薪50万的Python工程师曝光公司面试题
  20. Linux删除特殊名称文件或文件夹

热门文章

  1. 在linux + RTX3080上运行深度学习的经验
  2. android 5星,[android]市场满分5星游戏推荐:battleheart(勇者之心) | 古意人
  3. MYSQL学习与数据库综合实验(九)——触发器
  4. 对于MSB8036 找不到 Windows SDK 版本10.0.17763.0。请安装所需的版本的 Windows SDK的问题
  5. iOS中实现弹簧动画
  6. java调用wadl_java-ee – 如何从IntelliJ IDEA中的RESTful Java代码生成WADL?
  7. 机械加工行业MES解决方案,解决生产作业调度问题
  8. Portainer.io
  9. 建筑产业数字化进程提速 业内期盼国家战略出台
  10. selenium实现12306火车购票网站滑块自动验证登录