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

文章目录

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

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

  1. 安装IK分词器插件

    首先,需要下载与你的 Elasticsearch 版本相匹配的 IK 分词器插件。

    进入elasticsearch的docker容器:

    dart 复制代码
    docker exec -it elasticsearch /bin/bash

    执行命令安装:

    dart 复制代码
    bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.13.0

    查看安装结果:

    dart 复制代码
    bin/elasticsearch-plugin list
  1. 重启Elasticsearch

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

    sh 复制代码
    docker restart elasticsearch
  2. 测试IK分词器

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

dart 复制代码
POST _analyze
{
  "analyzer": "standard",
  "text": "尚硅谷谷粒商城"
}

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

使用中文ik分词器。

dart 复制代码
POST _analyze
{
  "analyzer": "ik_smart",
  "text": "尚硅谷谷粒商城"
}

结果如下,处理中文时,IK分词器比standard要强大的多。

当然,这个分词器也有改进的空间,比方说,上面例子中,分词器不能正确的把尚硅谷识别为一个词,这就需要配合专门的词库来进行优化了。

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

1,创建nginx容器

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

1.1 创建nginx文件夹

在/mydata下创建nginx文件夹。

dart 复制代码
cd /mydata
mkdir nginx

1.2 创建nginx容器获取nginx配置

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

dart 复制代码
docker run -p 80:80 --name nginx  -d nginx:1.10

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

1.3 复制nginx容器配置文件

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

dart 复制代码
docker container cp nginx:/etc/nginx .

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

1.4 删除临时的nginx容器

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

dart 复制代码
docker stop nginx
docker rm nginx

1.5 创建新的nginx容器

dart 复制代码
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容器。

dart 复制代码
docker exec -it elasticsearch /bin/bash

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

dart 复制代码
<?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文件,文件中输入词语:

dart 复制代码
尚硅谷
乔碧萝

2.3 重启容器

重启elasticsearch容器和nginx容器。

dart 复制代码
docker restart elasticsearch
docker restart nginx

3,测试扩展词库效果

dart 复制代码
POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "尚硅谷谷粒商城"
}

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

相关推荐
DIY机器人工房11 分钟前
[9-2] USART串口外设 江协科技学习笔记(9个知识点)
笔记·科技·stm32·单片机·学习·江协科技
蒙奇D索大1 小时前
【11408学习记录】考研英语写作提分秘籍:2013真题邀请信精讲+万能模板套用技巧
笔记·学习·考研·改行学it
霸王蟹2 小时前
React 项目中封装 Excel 导入导出组件:技术分享与实践
前端·笔记·学习·react.js·typescript·excel·vite
L2ncE3 小时前
ES101系列07 | 分布式系统和分页
java·后端·elasticsearch
Elasticsearch3 小时前
SRE 基础知识:在站点可靠性工程中可以期待什么
elasticsearch
z人间防沉迷k6 小时前
MySQL事务和索引原理
数据库·笔记·sql·mysql
houliabc7 小时前
【2025年软考中级】第二章2.2 程序设计语言的基本成分
笔记·学习·证书·软考
✎ ﹏梦醒͜ღ҉繁华落℘7 小时前
WPF学习
c语言·开发语言·笔记
大筒木老辈子7 小时前
Linux笔记---线程
笔记
杨DaB8 小时前
【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议
java·笔记·学习·java-ee