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

黑马的ES课程中的不足

在我自己做项目使用ES的时候,发现了黑马没教的方法,以及一些它项目的小问题

搜索时的匹配方法

这个boolQuery().should

我的项目是通过文章的标题title和内容content来进行搜索

但是黑马它的项目只用了must

如果我们的title和content都用must,那么我们的搜索内容就是 必须同时匹配到content和title  这样子是错误的

所以我们用should(),这个是我们可能匹配到

可以这样子理解

must()表示必须,should表示或者

自动补全的字段必须是Completion类型

我们的自动补全的Suggestion字段其实是一个List<>一样的类型

所以我们的java代码中的对象是List类型

我的项目中我是把city,和title这两个放到我们的List中,然后这个来实现我们的自动补全

黑马项目的自动补全的不足

首先黑马的教程提出了一个例子

狮子,和虱子,我们搜索的时候不应该都转成拼音shizi

这样子就会导致两个都搜索出来从而导致我们的搜索结果的错误

所以我们创建时的分词器用拼音,搜索时的分词器就不用拼音了

我们指定两种分词器,这样就决定了我们的索引库的结构

analyzer是我们的创建时的分词器

search_analyzer是我们的搜索时的分词器

这样我们就实现了中文搜索的时候用中文搜索,然后拼音搜索的时候用拼音搜索

我们搜索 动  成功用中文搜索了

我们搜索dong 也成功用拼音搜索,搜到了 东

也就是说我们的ES的搜索是没有问题,因为我们的索引的结构已经指定了

中文搜索的时候使用中文 英文搜索的时候使用英文

但是我们的自动补全,其实有问题

我们的suggestion自动补全字段,其实也是要中文搜索的时候补全中文,拼音搜索的时候补全拼音

但是黑马的教程里面,它的自动补全没有中文搜索的时候补全中文

如果我们不指定中文搜索的时候补全中文

那么我们搜索 “导”这个字的时候  它的底层会转成 d  从而搜索出一堆无关的东西

例如搜索出了这些

所以我们重新弄索引,重新指定我们的搜索的分词器

这样我们就能实现

Suggestion字段的时候

拼音的时候拼音补全

中文的时候中文补全

例如我们搜索dao

搜索 导

搜索 动

ok,全部成功了

黑马的课程里面没有给Suggetion字段的补全弄成拼音的时候用拼音搜索补全,中文搜索时用中文搜索补全,从而造成了自动补全的问题,这样子就没有问题了

http://www.lryc.cn/news/392948.html

相关文章:

  • STM32 中断编程入门
  • 使用maven搭建一个SpingBoot项目
  • 使用 HTTPS 已成为网站的标配了
  • 前后端分离Nginx
  • 【简单讲解下Tauri】
  • mac上挂载linux目录
  • Linux系统的服务——以Centos7为例
  • Numpy矩阵运算
  • Spring容器Bean之XML配置方式
  • 【Rust入门】生成随机数
  • 普通Java工程如何在代码中引用docker-compose.yml中的environment值
  • 微观特征轮廓尺寸测量:光学3D轮廓仪、共焦显微镜与台阶仪的应用
  • Rust开发环境搭建
  • 图文识别0难度上手~基于飞浆对pdf简易ocr并转txt
  • FFmpeg常用命令手册
  • CTF入门知识点
  • Leetcode 完美数
  • springboot中的定时任务编写
  • 第100+14步 ChatGPT学习:R实现随机森林分类
  • C#面 :ASP.Net Core中有哪些异常处理的方案?
  • 论文辅导 | 基于多尺度分解的LSTM⁃ARIMA锂电池寿命预测
  • 开关阀(4):对于客户技术要求信息的识别
  • Python统计实战:时间序列分析之二阶曲线预测和三阶曲线预测
  • Drools开源业务规则引擎(三)- 事件模型(Event Model)
  • 智慧校园行政办公升级,日程监控不可或缺
  • RedHat运维-Linux SSH基础3-sshd守护进程
  • 医院产科信息化管理系统源码,智慧产科管理系统,涵盖了从孕妇到医院初次建档、历次产检、住院分娩、统计上报到产后42天全部医院服务的信息化管理。
  • Softmax作为分类任务中神经网络输出层的优劣分析
  • 404白色唯美动态页面源码
  • 细说MCU的ADC模块单通道连续采样的实现方法