小工具      在线工具  汉语词典  css  js  c++  java

elasticsearch IK 中文分词器 精确查询

Java,elasticsearch,java,es,大数据 额外说明

收录于:97天前

在 Mac 上安装 ElasticSearch 6.6.2

MAC下安装ElasticSearch Head插件

基于上面两篇文章,我们来学习一下IK

IKAnalyzer:一个免费开源的 java 分词器。它是目前比较流行的中文分词器之一。简单、稳定。如果你想要特别好的结果,你需要维护自己的词汇表并支持自定义词典。

1.安装ik分词器插件

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v6.4.2,版本如下图:

然后在elasticsearch下的plugins文件下创建一个ik文件夹,将上面的压缩包解压到这里。

修改ik文件下的plugin-descriptor.properties文件,设置版本号(我这里使用的elasticsearch版本号是6.2.2,ik版本号是6.3.0,官网说同大版本可以使用number,这里的主要版本是6),如下:

description=IK Analyzer for Elasticsearch
#
# 'version': plugin's version
version=6.3.0
#
# 'name': the plugin name
name=analysis-ik
#
# 'classname': the name of the class to load, fully-qualified.
classname=org.elasticsearch.plugin.analysis.ik.AnalysisIkPlugin
#
# 'java.version' version of java the code is built against
# use the system property java.specification.version
# version string must be a sequence of nonnegative decimal integers
# separated by "."'s and may have leading zeros
java.version=1.8
#
# 'elasticsearch.version' version of elasticsearch compiled against
# You will have to release a new version of the plugin for each new
# elasticsearch release. This version is checked when the plugin
# is loaded so Elasticsearch will refuse to start in the presence of
# plugins with the incorrect elasticsearch.version.
elasticsearch.version=6.2.2

然后重新启动elasticsearch:进入bin文件夹并执行命令elasticsearch。

启动成功界面如下:

2. 常用ES接口测试

1. 创建索引

http://localhost:9200/es  PUT

执行结果:
{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "es"
}

2.创建表并设置分词创建映射

http://localhost:9200/es/_mapping/doc  POST
参数:Content-Type  application/json
{
  "properties":{
    "content":{
      "type":"text",
      "analyzer":"ik_max_word",
      "search_analyzer":"ik_smart"
    }
  }
}

执行结果:
{
    "acknowledged": true
}

3.添加数据,添加4条测试数据

http://localhost:9200/es/doc/1  POST
header: Content-Type :application/json
参数:
{
  "content":"美国留给伊拉克的是个烂摊子吗"
}

http://localhost:9200/es/doc/2  POST
header: Content-Type :application/json
{
  "content":"公安部:各地校车将享最高路权"
}

http://localhost:9200/es/doc/3  POST
header: Content-Type :application/json
{
  "content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
}

http://localhost:9200/es/doc/4  POST
header: Content-Type :application/json
{
  "content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
}
执行结果:
{
    "_index": "es",
    "_type": "doc",
    "_id": "4",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 1
}

4、分词搜索,找到2条数据如下【匹配查询(注意匹配查询只能针对单个字段)】

http://localhost:9200/es/_search  POST
参数:
{
  "query": {
    "match": {
      "content": "中国"
    }
  }
}

执行结果:
{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 0.6489038,
        "hits": [
            {
                "_index": "es",
                "_type": "doc",
                "_id": "4",
                "_score": 0.6489038,
                "_source": {
                    "content": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
                }
            },
            {
                "_index": "es",
                "_type": "doc",
                "_id": "3",
                "_score": 0.2876821,
                "_source": {
                    "content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
                }
            }
        ]
    }
}

5、删除索引

http://localhost:9200/index  delete

6.分析分词_analyze

http://localhost:9200/_analyze  POST
参数:
{
	"analyzer":"ik_max_word",
	"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": 1,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 2
        }
    ]
}

3. 精确合并查询(and、or)

1.所有数据如下:

http://localhost:9200/es/_search  查所有数据,如下:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 6,
        "max_score": 1,
        "hits": [
            {
                "_index": "es",
                "_type": "doc",
                "_id": "5",
                "_score": 1,
                "_source": {
                    "content": "美国人特朗普垃圾"
                }
            },
            {
                "_index": "es",
                "_type": "doc",
                "_id": "4",
                "_score": 1,
                "_source": {
                    "content": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
                }
            },
            {
                "_index": "es",
                "_type": "doc",
                "_id": "2",
                "_score": 1,
                "_source": {
                    "content": "公安部:各地校车将享最高路权"
                }
            },
            {
                "_index": "es",
                "_type": "doc",
                "_id": "6",
                "_score": 1,
                "_source": {
                    "content": "美航空母舰国人"
                }
            },
            {
                "_index": "es",
                "_type": "doc",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "content": "美国人111"
                }
            },
            {
                "_index": "es",
                "_type": "doc",
                "_id": "3",
                "_score": 1,
                "_source": {
                    "content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
                }
            }
        ]
    }
}

2.或查询

http://localhost:9200/es/_search 
参数:
{
  "query": {
    "match": {
      "content": "美国人1"   
    }
  }
}

从上面的结果可以分析出:这是因为解析器会将“美国111”拆分成“美国”和“111”2个单词,而默认的运算符是or,所以上面的2个单词都是找到文章数据的。

3、使用和查询,实现精准查询

http://localhost:9200/es/_search?pretty=true  POST

{
  "query": {
      "match": {
	        "content": {
		        "query": "美国人111",
		        "operator": "and"
		        }
             }
        }
}

从上面的结果可以看出,查询结果内容包含“美国人”和“111”的记录。并且被使用,因此找到了准确的数据。

4.“美国111”上面的分词,可以被划分为下面的几个词,如下截图:

ik_max_word:将文本拆分为最细粒度,例如将“中华人民共和国国歌”拆分为“中华人民共和国、中华人民共和国、中国、中国、中华人民共和国、人民、人民、人民” 、共和国、共和国、、国国、国歌”将穷尽所有可能的组合,适合Term查询;

ik_smart:会做最粗粒度的拆分,例如将“中华人民共和国国歌”拆分为“中华人民共和国国歌”,适合词组查询。


参考:https://www.jianshu.com/p/362f85ebf383

           https://www.cnblogs.com/cjsblog/p/9910788.html

. . .

相关推荐

额外说明

Java加载dll或so库文件的路径 java.library.path

1. Java的System.load 和 System.loadLibrary都可以用来加载库文件 2.例如你可以这样载入一个windows平台下JNI库文件: System.load("C://Documents and Settings//Test

额外说明

dubbo原理框架设计

dubbo原理框架设计 (1)config 配置层:对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类。 (2)proxy 服务代理层:服务接口透明代

额外说明

Java提高_若依——Ruoyi监控部分源码分析

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

day17_el&session

今日内容 JSP 指令 注释 内置对象 MVC开发模式 EL表达式 JSTL标签 三层架构 JSP 指令 作用:用于配置JSP页面,导入资源文件 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %> 分类: page :配置JSP页

额外说明

Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等)

Unity通过Android Studio 获取手机权限(存储、录音、相机等) 文章目录 Unity通过Android Studio 获取手机权限(存储、录音、相机等) 常用权限 一、动态获取权限流程 二、使用步骤 1.检测当前是否已获取权限 2.检测当

额外说明

数据结构——排序算法——计数排序

计数排序就是一种时间复杂度为 O(n) 的排序算法,该算法于 1954 年由 Harold H. Seward 提出。在对一定范围内的整数排序时,它的复杂度为 O(n+k)(其中 k 是整数的范围大小)。 伪计数排序 我们需要对一列数组排序,这个数组中每

额外说明

约瑟夫环问题

使用queue<int>q记得加上头文件#include<queue>  ⭐每次移动的个数相等&&输出最后剩下的编号 剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) class Solution { public:

额外说明

C语言二级指针第三种内存模型demo

#include "stdlib.h" #include "stdio.h" #include "string.h" /* * 二级指针 * 二级指针输入模型 * 二级指针输出模型 */ //#define _CRT_SECURE_NO_WARNING

额外说明

Mybatis框架(三)Mybatis的CRUD操作

在上一篇Mybatis框架(二)Mybatis的入门程序中实现了Mybatis的查找操作,本文章主要实现其余的几种操作,这里不再创建项目,将接着上篇继续操作: 一、我们只需要更该接口StuMapper与Mapper的配置文件中的内容,其余不需要做变动。

额外说明

永久免费使用免费20G空间的推荐

穷站长(QIONGZZ.com) - 国内最大的免费空间站,国内最便宜最稳定的空间 免费20G全能空间正在火爆开放中。。。。。 【注册地址】: http://www.qiongzz.com/freeweb【特色介绍】: 『空间无限 永久免费』 免费为您提

ads via 小工具