Elasticsearch连续剧之分词器

news2024/11/29 0:31:24

目录

  • 一、前言
  • 二、默认分词器
  • 三、IK分词器
    • 1.主要算法
    • 2.安装IK分词器
      • 2.1 关闭es服务
      • 2.2 上传ik分词器到虚拟机
      • 2.3 解压
      • 2.4 启动ES服务
      • 2.5 测试分词器效果
      • 2.6 IK分词器词典
  • 四、拼音分词器
    • 1.安装
    • 2.测试分词效果
  • 五、自定义分词器
    • 1.创建自定义分词器
    • 2.测试

一、前言

ES文档的数据拆分成一个个有完整含义的关键词,并将关键词与文档对应,这样就可以通过关键词查询文档。要想正确地分词,需要选择合适的分词器。
现在咱们来探索一下分词器的真实面目!

二、默认分词器

standard analyzer:Elasticsearch默认分词器,根据空格和标点
符号对英文进行分词,会进行单词的大小写转换。

默认分词器是英文分词器,对中文的分词是一字一词。

三、IK分词器

IK分词器,全名IKAnalyzer,是一个开源的,基于Java语言开发的轻量级中文分词工具包。

1.主要算法

支持对中文进行分词,提供了两种分词算法

ik_smart:最少切分
ik_max_word:最细粒度划分

2.安装IK分词器

2.1 关闭es服务

2.2 上传ik分词器到虚拟机

tips: ik分词器的版本要和es版本保持一致

2.3 解压

解压ik分词器到elasticsearch的plugins目录下

unzip elasticsearch-analysis-ik-7.17.0.zip -d /usr/local/elasticsearch1/plugins/analysis-ik

2.4 启动ES服务

su es

#进入ES安装文件夹:
cd /usr/local/elasticsearch1/bin/

#启动ES服务:
./elasticsearch -d

2.5 测试分词器效果

#算法1
GET /_analyze
{
 "text":"测试语句",
 "analyzer":"ik_smart"
}

eg:
GET /_analyze
{
  "text": "我爱美羊羊",
  "analyzer": "ik_smart"
}

在这里插入图片描述

#算法2
GET /_analyze
{
 "text":"测试语句",
 "analyzer":"ik_max_word"
}

eg:
GET /_analyze
{
  "text": "我爱美羊羊",
  "analyzer": "ik_max_word"
}

在这里插入图片描述

2.6 IK分词器词典

IK分词器根据词典进行分词,词典文件在IK分词器的config目录中。

  • main.dic:IK中内置的词典。记录了IK统计的所有中文单词。
  • IKAnalyzer.cfg.xml:用于配置自定义词库。
    在这里插入图片描述

四、拼音分词器

在这里插入图片描述

拼音分词器可以将中文分成对应的全拼,全拼首字母等。

1.安装

和ik分词器安装一样,也是先将es服务关闭,将拼音分词器上传至虚拟机,并且分词器版本需要和es版本一致(参考ik分词器安装)

2.测试分词效果

GET /_analyze
{
 "text":测试语句,
 "analyzer":pinyin
}

eg:
GET /_analyze
{
  "text": "xi yang yang",
  "analyzer": "pinyin"
}

在这里插入图片描述

五、自定义分词器

在这里插入图片描述

前面两种分词器,各有优点,但是他们的功能确实不够完备,比如使用ik分词器可以对中文进行分词,但是却不能对拼音分词;所以在现实开发中,我们一般使用自定义分词器进行分词,这样既可以对文字分词,也可以对拼音分词,现在咱们来研究一下如何写一个ik+pinyin分词器。

1.创建自定义分词器

PUT /索引名
{
  "settings" : {
    "analysis" : {
      "analyzer" : {
        "ik_pinyin" : { //自定义分词器名
          "tokenizer":"ik_max_word", // 基本分词器
          "filter":"pinyin_filter" // 配置分词器过滤
         }
       },
      "filter" : { // 分词器过滤时配置另一个分词器,相当于同时使用两个分词器
        "pinyin_filter" : { 
          "type" : "pinyin", // 另一个分词器
          // 拼音分词器的配置
          "keep_separate_first_letter" : false, // 是否分词每个字的首字母
          "keep_full_pinyin" : true, // 是否分词全拼
          "keep_original" : true, // 是否保留原始输入
          "remove_duplicated_term" : true // 是否删除重复项
         }
       }
     }
   },
  "mappings":{
    "properties":{
      "域名1":{
        "type":域的类型,
        "store":是否单独存储,
        "index":是否创建索引,
             "analyzer":分词器
       },
      "域名2":{ 
        ...
       }
     }
   }
}

eg:
PUT /student2
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik_pinyin":{
          "tokenizer":"ik_max_word",
          "filter":"pinyin_filter"
        }
      },
      "filter": {
        "pinyin_filter":{
          "type":"pinyin",
          "keep_separate_first_letter" : false, 
          "keep_full_pinyin" : true,
          "keep_original" : true, 
          "remove_duplicated_term" : true 
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name":{
        "type": "text",
        "store": true,
        "index": true,
        "analyzer": "ik_pinyin"
      },
      "age":{
        "type": "integer"
      }
    }
  }
}

2.测试

GET /student2/_analyze
{
 "text": "程序员",
 "analyzer": "ik_pinyin"
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用OpenDRIVE

文章目录OpenDRIVE Notes#1 前言#2 OpenDRIVE结构#2.1 Road#2.1.1 道路属性#2.1.2 道路联接#2.1.3 参考线#2.2 laneSection#2.3 laneOffset#2.4 junction#2.4.1 路口的联接#2.5 poly3(三次多项式)#3 解析#3.1 数据结构#3.1.1 ID#3.1.2 Point#4 构建topo#5 邻接点#6 路径规划#7 …

计算机图形学实习教程之基本图形的生成(二维图形裁剪Cohen-Sutherland算法+图形平移算法+图形旋转算法),利用C#实现,附源码

环境:Win10Visual Studio 2022 Community 在本次实验中需要用到第一篇文章实验内容的代码及环境,详情请见:传送门 目录 一、实验目的 二、实验步骤 1.Cohen-Sutherland算法 2.平移算法 3.旋转算法 一、实验目的 1.熟练掌握二维图形裁剪…

Java中的包装类

基本数据类型的豪华版---包装类基本数据类型包装类基本数据类型 在我们刚开始学习Java的时候,我们学习的应该就是Java中的八种基本数据类型: byte short int long float double char boolean 当时我们还说过Java是面向对象编程的语言,一切皆对象,但是受到当时知识的限制,我们还…

PHP MySQL 创建数据库

数据库存有一个或多个表。 你需要 CREATE 权限来创建或删除 MySQL 数据库。 使用 MySQLi 和 PDO 创建 MySQL 数据库 CREATE DATABASE 语句用于在 MySQL 中创建数据库。 在下面的实例中,创建了一个名为 "myDB" 的数据库: 实例 (MySQLi - 面…

系分 - 案例分析 - 架构设计(Web架构)

个人总结,仅供参考,欢迎加好友一起讨论 文章目录案例分析 - 系统设计(Web架构)Web架构知识点单台机器 到 数据库与Web服务器分离应用服务器集群负载均衡负载均衡技术静态与动态算法Session共享机制有状态与无状态持久化技术ORM数据…

22.Isaac教程--使用 Isaac Sight可视化

使用 Isaac Sight可视化 本节介绍如何使用 Isaac Sight 检查导航堆栈,机器人上当前发生的情况。 Sight 使用 Isaac 节点,该节点运行可在设备上连接的 Web 服务。 通过在 Chrome 网络浏览器中导航到 http://localhost:3000 来启动 Isaac Sight。 &#x…

(详解)java:无效的目标发行版: 11

目录 背景 解决方法 1.打开文件下的Project Structure 如下图: 2. 3. 4.完毕 背景 其实出现问题的真正原因是你下载别人的代码,但是别人的JDK属于java11 或者java9,但是你的为java8 或者更低 解决方法 1.打开文件下的Project Structure 如下图&a…

微信小程序——视图与逻辑,页面导航(导航到 tabBar 页面,导航到非 tabBar 页面)

一.页面导航1.什么是页面导航页面导航指的是页面之间的相互跳转。例如&#xff0c;浏览器中实现页面导航的方式有如下两种&#xff1a;a.< a &#xff1e;链接b.location . href2&#xff0e;小程序中实现页面导航的两种方式声明式导航在页面上声明一个&#xff1c; navigat…

nodejs框架koa,egg以及es6一起学

文章目录前言问题关于ES6-Generatoregg中的处理Promisenode的fsWorksheet Object参考文档前言 大家知道&#xff0c;eggjs框架是基于Koa开发的。关于koa&#xff0c;有一张经典的洋葱图&#xff1a; 这张图比较形象地展示了koa对于request和response的处理。每一层都留下扩展…

【RabbitMQ】高级篇,学习纪录+笔记

目录 一.高级特性 1.1消息的可靠投递 2.1Consumer Ack 3.1消费端限流 4.1TTL 5.1死信队列 6.1延迟队列 7.1日志与监控 7.1.1日志 7.1.2监控 8.1消息追踪 8.1.1Firehose 8.1.2rabbitmq_tracing 9.1消息可靠性保障&#xff08;思路&#xff09; 9.2消息幂等性保障&…

Hash算法,插入排序,希尔排序,选择排序,冒泡排序,归并排序,快速排序,堆排序,基数排序

Hash算法hash就是散列表&#xff0c;就是把任意长度的输入通过散列算法变换成固定长度的输出&#xff0c;该输出就是散列值。实质就是压缩映射&#xff0c;散列值的空间通常远小于输入的空间。常利用hash算法&#xff0c;将输入的一千万个检索串转化为题目中所说大约三百万个不…

《Linux Shell脚本攻略》学习笔记-第七章

7.1 简介 随着磁盘存储技术的发展&#xff0c;最简单地备份方法是添加新的磁盘设备或是使用云存储&#xff0c;而不再是依赖磁盘。 但是也需要压缩备份数据&#xff0c;降低存储空间需求以及传输时间。把数据存放在云端之前应该对其加密。数据在加密之前通常都要先进行归档和压…

2.2总线的性能指标

文章目录一、总线传输周期二、总线时钟周期三、总线工作频率四、总线时钟频率五、总线宽度六、总线带宽1.概念2.注意点3.案例分析4.总结补充七、总线复用八、信号线数九、总结这一节我们一起学习评价 总线性能的指标&#xff0c;这些指标很可能在选择题或者大题第一小题出现。一…

Git团队协作及分支策略

目录 分布式版本控制系统 访问模型 分支策略-Git flow feature 分支策略-Github flow 分支策略-Gitlab flow 主干开发模式 总结 分布式版本控制系统 分布式相比于集中式的最大区别在于开发者可以提交到本地&#xff0c;每个开发者通过克隆&#xff08;git clone&#…

Pytest参数化-下篇

&#x1f60e;&#x1f60e;原文出自&#xff1a;测个der&#xff0c;博主的公众号&#xff0c;格式美观一些。 关于参数化的其他案例 数据嵌套及多参数传参 import pytestpwd_datas [["QINGAN",{"user":"SHIER","pwd":"1234…

5个关键词回顾2022年个推技术实践

作为一家数据智能服务商&#xff0c;2022年每日互动&#xff08;个推&#xff09;在为开发者和行业客户提供优质服务的同时&#xff0c;不断砥砺创新&#xff0c;追逐技术前沿。个推还持续参与开发者生态建设&#xff0c;积极总结、分享自身技术实战经验&#xff0c;面向行业输…

该如何测客户端专项测试?

整个行业现在越来越重视客户端的专项测试了。像接口的性能测试、webview 测试、H5性能分析等&#xff0c;每一项都需要测试。而对于卡顿的分析、系统资源分析、耗电量测试及弱网测试这块&#xff0c;也变得越来越重要了&#xff01;后面也会有相关的文章更新。大家可以戳此关注…

快解析远程访问解决方案——安全稳定,部署简单

我们说的远程办公通常指狭义上的远程办公&#xff0c;是指通过远程技术&#xff0c;或远程控制软件&#xff0c;对远程电脑进行操作办公&#xff0c;实现非本地办公&#xff0c;如在家办公、异地办公、移动办公等远程办公模式。这种技术的关键在于:穿透内网和远程控制的安全性。…

Wisej.NET 3.1.6 Crack

新功能 Wisej.NET 3.1 通过添加几个新的独特功能和简化的安装过程增强了里程碑 3.0 版本。 除了大量错误修复和对我们库的显着性能增强之外&#xff0c;3.1 还包括以下值得注意的新功能&#xff1a; 视觉工作室市场 Wisej.NET 现在比以往任何时候都更容易使用。或 Visual Studi…

联合证券|五大国际巨鳄集体爆雷,美股期指大跳水!

商场现已进入到雷雨季&#xff01; 周五晚间&#xff0c;花旗、摩根大通、高盛、富国和贝莱德团体爆雷。 花旗集团上一年第四季度每股收益低于预期&#xff0c;尽管营收好于预期。花旗集团Q4每股收益1.16美元&#xff0c;预期为1.17美元。财报发布之后一度暴降超3%&#xff1b;…