当前位置: 首页 > news >正文

谷粒商城实战笔记-122~124-全文检索-ElasticSearch-分词

文章目录

  • 一,122-全文检索-ElasticSearch-分词-分词&安装ik分词
  • 二,124-全文检索-ElasticSearch-分词-自定义扩展词库
    • 1,创建nginx容器
      • 1.1 创建nginx文件夹
      • 1.2 创建nginx容器获取nginx配置
      • 1.3 复制nginx容器配置文件
      • 1.4 删除临时的nginx容器
      • 1.5 创建新的nginx容器
    • 2,配置扩展词库
      • 2.1 elasticsearch配置扩展词库
      • 2.2 nginx新建词库文件
      • 2.3 重启容器
    • 3,测试扩展词库效果

一,122-全文检索-ElasticSearch-分词-分词&安装ik分词

Elasticsearch 使用的中文分词器IK Analyzer(简称IK)是一个非常流行的中文分词器插件。

  1. 安装IK分词器插件

    首先,需要下载与你的 Elasticsearch 版本相匹配的 IK 分词器插件。
    进入elasticsearch的docker容器:

    docker exec -it elasticsearch /bin/bash
    

    执行命令安装:

    bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.13.0
    

    查看安装结果:

    bin/elasticsearch-plugin list
    

在这里插入图片描述

  1. 重启Elasticsearch
    安装插件后,需要重启 Elasticsearch 服务以使插件生效。

    docker restart elasticsearch
    
  2. 测试IK分词器

为了对比效果,先使用标准的standard分词器,这个分词器是针对英文的。

POST _analyze
{"analyzer": "standard","text": "尚硅谷谷粒商城"
}

对于中文,standard分词器的效果非常不理想,其把中文拆分为单个汉字。

在这里插入图片描述

使用中文ik分词器。

POST _analyze
{"analyzer": "ik_smart","text": "尚硅谷谷粒商城"
}

结果如下,处理中文时,IK分词器比standard要强大的多。
在这里插入图片描述
当然,这个分词器也有改进的空间,比方说,上面例子中,分词器不能正确的把尚硅谷识别为一个词,这就需要配合专门的词库来进行优化了。

二,124-全文检索-ElasticSearch-分词-自定义扩展词库

1,创建nginx容器

因为我们要把词库放在nginx作为elasticsearch的扩展词库,所以首先要安装nginx。

1.1 创建nginx文件夹

在/mydata下创建nginx文件夹。

cd /mydata
mkdir nginx

1.2 创建nginx容器获取nginx配置

注意,这个nginx容器不是最终我们需要的nginx容器,仅仅是为了获取nginx配置文件的模板而创建的。

docker run -p 80:80 --name nginx  -d nginx:1.10

执行这个命令时,虽然我们没有提前下载镜像,docker会自动检测,若没有镜像,会先下载镜像。

1.3 复制nginx容器配置文件

复制nginx容器配置文件到前面创建的文件夹/mydata/下。

docker container cp nginx:/etc/nginx .

之后在nginx目录下,可以看到如下结构。

在这里插入图片描述

1.4 删除临时的nginx容器

执行下面命令,先停止nginx容器,后删除容器。

docker stop nginx
docker rm nginx

1.5 创建新的nginx容器

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf.d:/etc/nginx/conf.d \
-d nginx

2,配置扩展词库

2.1 elasticsearch配置扩展词库

进入elasticsearch容器。

docker exec -it elasticsearch /bin/bash

/usr/share/elasticsearch/config/analysis-ik中的 IKAnalyzer.cfg.xml配置nginx中的扩展词库。

<?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"></entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><entry key="remote_ext_dict">http://192.168.128.130/fenci/myword.txt</entry><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

2.2 nginx新建词库文件

在nginx的挂载目录html目录下,新建es目录,es目录下,新建fenci.txt文件,文件中输入词语:

尚硅谷
乔碧萝

2.3 重启容器

重启elasticsearch容器和nginx容器。

docker restart elasticsearch
docker restart nginx

3,测试扩展词库效果

POST _analyze
{"analyzer": "ik_max_word","text": "尚硅谷谷粒商城"
}

结果显示,IK分词器能基于扩展词库,将尚硅谷识别为一个词。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JVM—虚拟机类加载器
  • 机器学习练手(三):基于决策树的iris 多分类和波士顿房价预测
  • 华为的流程体系
  • 【大模型】【面试】独家总结表格
  • ISA95-Part8-错误处理的设计与集成
  • 【二】测试工具
  • 21天学通C++:理解函数对象、Lambda表达式
  • 微信小程序css中配置了文字超出一行或两行则显示省略号对纯数字或纯字母或小数点无效的解决办法
  • C Primer Plus 第5章——第一篇
  • C++ | Leetcode C++题解之第318题最大单词长度乘积
  • git clone private repo
  • 【iOS】多界面传值
  • pycharm中安装、使用扩展工具,以QT Designer为例
  • Centos 8系统xfs文件系统类型进行扩容缩容 (LVM)
  • C++初学者指南-5.标准库(第二部分)--更改元素算法
  • 网络传输文件的问题
  • @jsonView过滤属性
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【前端学习】-粗谈选择器
  • ESLint简单操作
  • express.js的介绍及使用
  • IndexedDB
  • JS笔记四:作用域、变量(函数)提升
  • js作用域和this的理解
  • LeetCode29.两数相除 JavaScript
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Redash本地开发环境搭建
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Vue 动态创建 component
  • Vue2.x学习三:事件处理生命周期钩子
  • Vue--数据传输
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端技术周刊 2019-02-11 Serverless
  • 如何解决微信端直接跳WAP端
  • 手机端车牌号码键盘的vue组件
  • 手写一个CommonJS打包工具(一)
  • 听说你叫Java(二)–Servlet请求
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 如何在招聘中考核.NET架构师
  • ​什么是bug?bug的源头在哪里?
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2022 CVPR) Unbiased Teacher v2
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (三分钟)速览传统边缘检测算子
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)树状数组
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .Net 6.0 处理跨域的方式
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net 执行Linux下多行shell命令方法