springboot elasticsearch vue ik中文分词器 实现百度/京东全文搜索

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

背景:实现和百度搜索一样效果的,全文搜索引擎支持关键词高亮显示

文章目录

          • 1. 企业级搜索引擎解决方案
          • 2. 创建索引规则
          • 3. 数据拉取
          • 4. 搜索高亮
          • 5. 自定义词库
          • 6. 效果图
          • 7. 开源源码

1. 企业级搜索引擎解决方案

分词器:english、standard、ik_max_smart、ik_smart、whitespace等

  1. 索引:创建索引时用ik_max_smart进行分词,搜索时使用ik_smart分词器进行搜索
  2. 查询:精准匹配使用term;查询匹配使用match
  3. 类型:需要分词使用text,部分词精准用keyword,分数用double,经纬度用geo_point,数字用integer
2. 创建索引规则
PUT /jd_goods
{"settings" : {"number_of_shards" : 1,"number_of_replicas" : 1},"mappings": {"properties": {"id":{"type": "integer"},"title":{"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"},"desc":{"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"},"price":{"type": "text"},"img":{"type": "text"}}}
}
3. 数据拉取

http://localhost:9090/parse/vue

    public List<Content> parseJD(String keyword) throws IOException {String baseUrl = "https://search.xxx.com/Search?keyword=";// 解析网页  在线预览中有处理Document document = Jsoup.parse(new URL(baseUrl + keyword), 30000);// 所有js中可以使用的方法,这里都能用Element element = document.getElementById("J_goodsList");//获取搜有的li元素Elements elements = element.getElementsByTag("li");ArrayList<Content> goodList = new ArrayList<>();// 获取元素中的内容,这里el 就是每一个li标签了for (Element el : elements) {//关于这种图片特别多的网站,所有的图片都是拉加载的String img = el.getElementsByTag("img").eq(0).attr("data-lazy-img");String price = el.getElementsByClass("p-price").eq(0).text();String title = el.getElementsByClass("p-name").eq(0).text();Content content = new Content();content.setTitle(title);content.setImg(img);content.setPrice("内容标题 " + price);content.setDesc("内容描述 " + title);goodList.add(content);}return goodList;}

在这里插入图片描述

4. 搜索高亮
  //    2. 获取es中的数据,实现基本搜索高亮功能public List<Map<String, Object>> searchPageHighlight(String keyword, int pageNo, int pageSize) throws IOException {if (pageNo <= 1) {pageNo = 1;}//    条件搜索SearchRequest searchRequest = new SearchRequest(ESConst.JD_SEARCH_INDEX);SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//    分页searchSourceBuilder.from(pageNo);searchSourceBuilder.size(pageSize);//    精准匹配TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(ESConst.SEARCH_CONDITION_FIELD, keyword);searchSourceBuilder.query(termQueryBuilder);searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//构建高亮HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.field(ESConst.HIGHLIGHT_TITLE);highlightBuilder.field("desc");highlightBuilder.requireFieldMatch(true);//多个高亮 显示highlightBuilder.preTags(ESConst.HIGHLIGHT_PRE_TAGS);highlightBuilder.postTags(ESConst.HIGHLIGHT_POST_TAGS);searchSourceBuilder.highlighter(highlightBuilder);//    执行搜索searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//    解析结果ArrayList<Map<String, Object>> list = new ArrayList<>();for (SearchHit hit : searchResponse.getHits().getHits()) {//  解析高亮的字段,将原来的字段置换为我们高亮的字段即可!Map<String, HighlightField> highlightFields = hit.getHighlightFields();HighlightField title = highlightFields.get(ESConst.HIGHLIGHT_TITLE);HighlightField desc = highlightFields.get("desc");//    获取原来的结果Map<String, Object> sourceAsMap = hit.getSourceAsMap();if (title != null) {Text[] fragments = title.fragments();String newTitle = "";for (Text text : fragments) {newTitle += text;}//高亮字段替换掉原来的内容即可sourceAsMap.put(ESConst.SEARCH_CONDITION_FIELD, newTitle);}if (desc != null) {Text[] fragments = desc.fragments();String newDesc = "";for (Text text : fragments) {newDesc += text;}//高亮字段替换掉原来的内容即可sourceAsMap.put("desc", newDesc);}// 将结果放入list容器返回list.add(sourceAsMap);}return list;}
5. 自定义词库

new_word.dic

女包
女士包
java语言

在这里插入图片描述

6. 效果图

http://localhost:9090/

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

7. 开源源码

https://gitee.com/gblfy/es7-jd-vue

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

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

相关文章

学习笔记之数据可视化(一)——项目适配方案

目录 最终效果展示1. 数据可视化适配方案1.1 项目需求1.2 PC端适配方案1.3 使用到的技术2. 数据可视化项目开发项目准备1.1 文件准备1.2 引入js和css文件1.3 CSS样式初始化1.4 VS code 插件安装(任选一款)1.4.1 Live Server1.4.2 Preview on Web Server**~更多内容,请阅读下…

上海鸥新:基于大数据的商场实时客流分析系统

公司介绍 上海鸥新软件有限公司专注于室内定位技术和客流统计与分析的研发&#xff0c;如室内定位引擎、客流统计与分析系统。在用户导入客流系统的同时&#xff0c;为商业零售实体店提供了网络覆盖、微信上网&#xff0c;定时定地点向客户进行精准化商业信息推送等一体化解决…

常见的Ubuntu命令30条(二)

Ubuntu命令是指在Ubuntu操作系统中用于执行各种任务和操作的命令行指令。这些命令可以用于管理系统、配置网络、安装软件、浏览文件等。Ubuntu命令通常在终端&#xff08;Terminal&#xff09;应用程序中输入并执行。 history&#xff1a;显示命令行历史记录。grep&#xff1a…

手把手带你搭建一个自己的云服务器并部署Web程序

一. 服务器的购买 我选择的是阿里云的服务器&#xff0c;学生价9.5元一个月&#xff0c;百度直接搜索阿里云&#xff0c;然后点击右上角登录&#xff0c;推荐大家用支付宝扫码登录&#xff0c;方便快捷。阿里云官网的东西比较多&#xff0c;登录后我找了很久也没有找到学生服务…

QingStor分布式存储全线升级:自研需要勇气,成功还要看实力

数据量的爆炸式增长和企业对数据价值挖掘的渴求&#xff0c;正在让存储市场迎来前所未有的发展机遇。一方面&#xff0c;分布式存储正在经历快速的增长时期&#xff0c;IDC 2019年市场预测报告显示&#xff0c;无论是对象存储、文件存储还是块存储&#xff0c;分布式存储在未来…

加入阿里技术团队三年,哪些习惯让我在工作上持续受益?

2017年研究生毕业&#xff0c;我加入阿里巴巴数据库技术团队&#xff0c;从事分布式数据库研发&#xff0c;如今算来已经有三年时间了&#xff0c;在这期间&#xff0c;我深度参与了双十一背后的数据库PolarDB-X从设计到实现的全过程。在这三年的时间里&#xff0c;于我而言&am…

征战多云时代,Nutanix这款Kubernetes多云PaaS新利器,你Get到了吗?

当前&#xff0c;全球企业上云步伐加快&#xff0c;企业都有相同的目标&#xff1a;尽快将业务迁移上云&#xff0c;从而减少基础架构成本&#xff0c;提高员工效率&#xff0c;缩短业务研发时间&#xff0c;提供性能可靠的IT系统。 当下&#xff0c;以容器、服务网格、微服务…

学习笔记之数据可视化(二)——页面布局(中)

续上一章 2.6 监控区域布局2.6.1 布局结构解析:2.6.2 样式描述:2.6.3 HTML结构及CSS样式代码2.6.3 ### 监控区域-效果2.6.7 点位区域(point)2.6 监控区域布局 监控区域 monitor盒子高度: 480px,布局划分及内部盒子类名如下: 2.6.1 布局结构解析: .tab样切换:tabs 标…

OFD文件、pdf文件相互转换、ofd文件在线预览

文章目录一、在线预览1. api使用2. 案例3. 效果二、ofd转odf2.1. api使用2.2. 参考案例三、odf转ofd3.1. api使用3.2. 参考案例3.3. 开源项目一、在线预览 1. api使用 ofd文件在线预览: 使用方式&#xff1a; 格式&#xff1a;/ofdViewer/viewer.html?file1.ofd相对路径 2.…

【开发者成长】Vue.js 中有哪些性能陷阱

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 我内心深处对游戏的热爱&#xff0c;让我一直渴望能自己制作一些电子游戏。几个月前我开始将这种梦想变为现实&#xff0c;并…

【职业生涯】这样的开发人员每个团队都想要

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 合作是你职业生涯中不会缺少的一个部分。 什么是团队&#xff1f;团队就为了共同目标而努力的一群人。一个团队实现目标的过…

elasticsearch-7.15.2 同时支持中文ik分词器和pinyin分词器

文章目录1. 自定义分词器2. 映射模型3. 效果图1. 自定义分词器 ES如何支持拼音和中文分词 &#xff1f; 自定义分词器 支持拼音和中文分词 PUT /jd_goods {"settings": {"analysis": {"analyzer": {"ik_smart_pinyin": {"type&…

【数字康复治疗】自闭症市场能否走出供求困境

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 世界卫生组织将每年的4月2日设为“世界提高自闭症意识日”&#xff0c;旨在提高人们对自闭症和相关研究与诊断以及自闭症患者…

微软全球 AKS 女掌门人,这样击破云原生“怪圈”!

来源 | 程序人生作者 | 伍杏玲近年来&#xff0c;“云原生”成为IT界的热词&#xff0c;可什么是“云原生”&#xff1f;不少开发者表示“云里雾里”&#xff0c;更别提如何借助云原生更好地释放云价值。从云原生&#xff08;CloudNative&#xff09;一词中我们看到&#xff0c…

【数据库】一个 rm -rf 把公司整个数据库删没了

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 经历了两天不懈努力&#xff0c;终于恢复了一次误操作删除的生产服务器数据。 对本次事故过程和解决办法记录在此&#xff0c…

elasticsearch-7.15.2 集成pinyin分词器

文章目录1. 下载拼音分词器2. es集成pinyin3. 启动es4. pinyin分词5. 效果图6. 开源项目1. 下载拼音分词器 链接&#xff1a;https://github.com/medcl/elasticsearch-analysis-pinyin 2. es集成pinyin 方式任选其中一种即可 第一种&#xff1a;在线安装 ./bin/elasticsear…

【智能AI】准确率97%的开源肺炎检测模型

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 最近&#xff0c;一位澳大利亚的人工智能博士候选人在 LinkedIn 上发布了一篇关于 SARS-CoV-2 病毒的研究文章。由于极具话题…

豪气!华为放话:3年培养100万AI人才!网友神回应了

大家经常把BAT挂在嘴边&#xff0c;但是可能有些人还不知道&#xff0c;华为的体量早已超越了这三巨头&#xff0c;只是迟迟不肯上市。华为的创始人任正非曾说表&#xff1a;上不上市不重要&#xff0c;最重要的是要让中国华为的技术能够称霸全球&#xff01;华为对技术的重视&…

elasticsearch-7.15.2 配置IK中文分词器+拼音分词

文章目录1. 下载分词器2. es集成pinyin3. 启动es4. 自定义分词5. 映射模型6. 初始化数据7. 查询索引8. 效果图9. 开源项目1. 下载分词器 ik中文分词器 中文分词器&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik 拼音分词器 链接&#xff1a;https://github.…

Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌

近日&#xff0c;国际知名调研机构 Gartner 发布 2020 年容器公有云竞争格局报告&#xff0c;阿里云再度成为国内唯一入选厂商。Gartner 报告显示&#xff0c;阿里云容器服务在中国市场表现强劲&#xff0c;产品形态丰富&#xff0c;在如 Serverless 容器、服务网格、安全沙箱容…