黑马学ElasticSearch(十)

news2024/12/23 19:54:24

目录:

(1)自动补全-安装品分词器

(2)自动补全-自定义分词器

(3)自动补全-DSL实现自动补全查询

(4) 自动补全-修改酒店索引库结构

(5)自动补全-RestAPI实现自动补全查询

(6)自动补全-实现搜索框自动补全


(1)自动补全-安装品分词器

https://github.com/medcl/elasticsearch-analysis-pinyin

下载解压 

 

 将解压后的py,上传到ES的挂载的插件目录:

重启ES:

测试分词查询 :使用ik_max_word:进行分词 :它分的词语比ik_smart:分的词语更多

 使用拼音分词:

 这就是拼音分词器的用法,以后我们在创建拼音分词器的时候可以mapping映射去定义拼音分词器,作为我们的分词器了

 (2)自动补全-自定义分词器

上面的拼音分词器,还有一些问题,这里把拼音的首字母放到这里,也说明了这句话没有被分词,而是作为一个整体出现的

还把每一个字都形成了一个拼音,这也没什么用

这里只剩下了拼音,我们用拼音搜索的情况占少数的,大多数情况下我们想用中文搜索

 上面的自定义分词器例子就解决了拼音分词器不能分词的问题

tokenizer:进行分词 

keep_joined_full_pinyin:分词全拼 

Keep_original:要不要保持中文 

解决其他的问题:可以参照官网的内容

 

 

 

 运行新建索引库添加自定义分词器

测试一下分词:

 在分词分词的汉字拼音都有,而且还有分词的首字母拼音

 插入一些文档:

搜索:有点问题搜索拼音,把同音字也搜到了

这就是问题的所在,在搜索时也用了拼音选择器,拿拼音去搜,就搜出来2条数据,在创建的时候可以用拼音选择器,在搜索的时候不应该用拼音选择器 ,在搜索是用户输入的是中文,用户用中文去搜,输入的是拼音,才拿拼音去搜

 analyzer:是创建索引时用的

search_analyer:是搜索是去用的

先删掉:

 修改:

 

运行:在插入两条数据:

重新搜索:此时就搜索到一个

 character filter:是对特殊字符做处理的

 (3)自动补全-DSL实现自动补全查询

 

创建索引库:

 

插入数据:3条

 查询:s

 

 

 更改输入so

 

 

(4) 自动补全-修改酒店索引库结构

查看数据库结构:

 修改:

 

 

 

 

 这里添加了一个sugession字段,所以对应的java代码里面也要加一个sugession字段

 然后把brand和business放进这个集合,将来可以根据这个自动补全

使用Arrays.asList()进行集合的使用

 

 

重新运行原来写过的测试类:导入数据

 运行一下:发现在搜索的当中包含y一个sugession,里面有品牌信息和商圈信息

这个商圈信息,有江湾和/五角场 有一个小问题将来只能根据江来提示信息不能根据五来进行提示

可以把它切割一下,需要修改java代码 

 

 改造实体类代码:

Collections集合工具类中的addAll()往集合中一次性添加多个元素

 

运行再次查询:business就切割成多个了

 自动补全查询测试:

 

(5)自动补全-RestAPI实现自动补全查询

 

在测试类中添加新的测试方法:

 

 

 

 

 

 

 

(6)自动补全-实现搜索框自动补全

 

 

在HotelController中添加新的请求:

 

 

 IHotelService:接口

 IHotelServiceImpl实现类实现方法:1的前面有一个

try{

 

 重启测试:输入x就会显示跟x有关的所有结果

 

 

 这样就实现了拼音搜索的自动补全功能

 

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

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

相关文章

测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)

目录 一、测试用例的基本要素 二、设计测试用例的万能公式 (在没有需求文档的情况下) 1、水杯的测试用例 2、一个网站的登录测试用例 三、基于需求进行测试用例的设计 四、测试用例的具体设计方法 1、等价类 2、边界问题 3、判定表(因果图&#…

协程和线程的区别、协程原理与优缺点分析、在Java中使用协程

文章目录什么是协程协程的优点与缺点协程实现原理.协程与线程在不同编程语言的实现在Java中使用协程Kilim介绍Kilim整合Java,使用举例小总结什么是协程 相对于协程,你可能对进程和线程更为熟悉。进程一般代表一个应用服务,在一个应用服务中可以创建多个…

源码看CAF的线程调度框架

序 本篇文章带着大家来看下CAF(C Actor Framwwork)的调度框架,也是算现阶段C比较成熟的调度框架,大家如果自己完成一个比较大型的项目,任务调度也可以参照CAF。 鉴于篇幅较长,大家如果学习使用如何使用CAF…

修改jupyter notebook默认路径

修改jupyter notebook默认路径jupyter notebook默认打开C:\Users\你的用户名,用户名是你的电脑用户名,upload文件又会在C盘生成一堆文件,很乱,用notebook打开文件还要跳转到目录,很麻烦,那有没有办法呢&…

【PYTHON】如何配置集成开发环境Geany

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

【笔记】大话设计模式17-20

【笔记】大话设计模式17-20 文章目录【笔记】大话设计模式17-2017 适配器模式17.1 Example17.2 定义17.3 Show me the code17.4 总结18 备忘录模式18.1 Example18.2 定义18.3 Show me the code18.4 总结19 组合模式19.1 Example19.2 定义19.3 Show me the code19.4 总结20 迭代…

基于python的人工智能数据处理常用算法

文章目录二分法求解最小二乘法曲线拟合最小二乘法的来历最小二乘法与曲线拟合多项式曲线拟合SciPy内置最小二乘法应用泰勒级数背景引入泰勒公式泰勒级数展开与多项式近似二分法求解 机器学习过程中往往会用到很多变量,而这些变量之间的复杂关系一般用非线性方程来&…

VS系列知识-VS Code的安装+Vue环境的搭建+Vue指令

一、VS Code下载地址 Visual Studio Code - Code Editing. Redefined 二、VS Code初始化设置 1.安装插件 在安装好的VSCode软件的扩展菜单中查找安装如下4个插件 2、创建项目 vscode本身没有新建项目的选项,所以要先创建一个空的文件夹,如project_xx…

【用三大件写出的开门烟花特效】

又到了一年一度的春节时期啦!昨天呢是北方的小年,今天是南方的小年,看到大家可以愉快的放烟花,过大年很是羡慕呀!辞旧岁,贺新春,今年我呀要放烟花,过春节!🧨。…

云原生|kubernetes|2022年底cks真题解析(1-10)

前言: cka和cks认证真的比较恶心,他们的那个PSI Bridge Secure Browser真的非常卡。 吐槽完毕,不废话,直接上真题解析。 CKS总共是16道题,题目顺序是打乱的,由于认证系统非常卡,因此&#xf…

通讯录最终版——动态存储+文件处理

最终版通讯录即从上一个版本修改过来先看总体代码,我们再看看差异ps:里面涉及到很多函数的使用,后续我会出专栏来书写这些函数的使用和实例,与常见错误大家可以通过https://cplusplus.com查找test.c#define _CRT_SECURE_NO_WARNIN…

Spring入门-IOC/DI入门与使用文件配置管理(1)

文章目录Spring入门1,Spring介绍1.1 为什么要学?1.2 学什么?1.3 怎么学?2,Spring相关概念2.1 初识Spring2.1.1 Spring家族2.1.2 了解Spring发展史2.2 Spring系统架构2.2.1 系统架构图2.2.2 课程学习路线2.3 Spring核心概念2.3.1 目前项目中的问题2.3.…

已解决:无法解析 jdk.tools:jdk.tools:1.6

文章目录问题描述解决方案问题描述 HBase API客户端操作时,报错:无法解析 jdk.tools:jdk.tools:1.6 这种问题司空见惯了,无非是依赖没下载,版本问题,依赖没加载成功,文件索引没更新成功,IDEA文…

大数据-Hadoop的介绍、配置和集群的使用

HDFS分布式文件系统 分布式:将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情 单机模式 厨房里只有一个人,这个人既要买菜,又要切菜,还要炒菜,效率低。 分布式模式 厨房…

leetcode2293:极大极小游戏(1.15每日一题)

题目表述: 给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法: 设 n 等于 nums 的长度,如果 n 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数…

深浅copy

go 在go语言中值类型赋值都是深拷贝,引用类型一般都是浅拷贝其本质就是,深拷贝会拷贝数据,而浅拷贝只会拷贝内存的地址,所有就会出现,像slice那样修改底层数组的值,slice的值也跟着改动。 深拷贝 修改a的…

[iHooya]1月15日寒假班作业解析

过滤多余的空格 一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。 输入:一行,一个字符串(长度不超过200),句子的头和尾都没有空格。 输出:过滤之后的句子。 样例输…

全球各国机场名称、坐标经纬度、高程数据(更新至2022年)

数据来源:自主整理 时间跨度:更新至2022 区域范围:全球各国 指标说明: 全球机场坐标数据,包含CSV格式、shpfile格式、kml格式属性字段包括机场类型、经纬度,高程,所在国家省市区域&#xff…

5.12回溯法--连续邮资问题--子集树

回溯法的题目太多了,不想写这个代码了,于是我就开始水一篇文章,就单纯的分析一下这个问题保持整本书完整的队形 问题描述 如何用有限的邮票数,贴出更多面额的需求? 举例 n5,m4 设计1:X1{1, …

20多年老码农的IT学习之路

20年IT工作经历,目前在一家500强做企业架构,年薪税前150万多.最近公司业绩不好,有感觉工作不保,所以又捡起了编程,开始学习Golang,Angular等。我不是985,211也不是海归,我…