laravel 分词搜索匹配度_电商网站上的搜索功能是如何实现的?

news/2024/5/9 12:21:48/文章来源:https://blog.csdn.net/weixin_39740419/article/details/110805308

今天是刘小爱自学Java的第159天。

感谢你的观看,谢谢你。

06c6056a4bb4b50f8d8a144279ea801f.png

学习计划安排如下:

  • 索引库本质上和数据库类似,也是存储数据的,既然如此自然也会有增删改查。
  • 那么这个索引库到底有何特别应用呢?
  • 索引库的特别之处在于它的查询,用户搜索一个词语,响应哪些对应的数据给用户?
  • 重点是match匹配查询和词条查询。

一、索引库的增删改查

1新增数据

57c103f868f9316eb3940cca5363db3f.png

①通过POST请求添加数据。

昨天我们给索引库设定了几个字段,以上述例子中的title字段为例,给其添加一条数据“小爱手机”,这样后面可以通过索引库来快速定位这条数据了。

通过响应结果可以看到result显示的是“created”,也就是新建了一个数据。

注意:这里的请求方式是POST,昨天关于索引库的创建时POST对应的是修改,PUT是新增,至于这儿为何是POST,暂时不清楚。

②随机生成id

系统会随机生成一个id来记录这条新增的数据,但是这个id太复杂了,不好记住。

所以在新增数据时自定义id。

2自定义id

d8f0a60dc9db9390f71e054eaa5d5f13.png

在请求路径中指定id即可。

关于请求路径:索引库是liuxiaoai01,索引类型goods,id为1,添加了一条数据。

有了id之后我们就可以去进行修改和删除数据的操作了,如果不是系统随机的id不容易记住,使用起来不方便。

3修改数据

cef0035153f9c54b6930ed24941d3ed2.png

PUT请求就是修改了,但是要注意使用PUT必须要指定id,如果没有会报错。

其中关于id的作用:

  • 如果id在文档中不存在,则新增该数据,就相当于通过POST添加了一条数据。
  • 如果id在文档中存在,则修改对应id数据。

也通过PUT请求既能完成新增操作又能完成修改操作,一般都会直接使用PUT。

但也要知道使用POST新增数据这回事。

3删除数据

2863c08d0e3408f7930008aa537262cd.png

根据id即可删除对应的数据。

PS:观察响应结果result的值就能看出来进行了什么操作。

  • created对应新增数据。
  • update对应修改数据。
  • delete对应删除数据。

4查询数据

aa5d78064aa68bc33e113aa417eb9d58.png

同样的方式,GET请求即对应的查询操作,根据id即可查询出对应的数据。

但是这种方法基本不会用。

要知道用户在搜索的时候,他怎么可能知道商品对应的id是多少?

所以用户查询的时候是使用不到id查询的,就需要全文检索技术了,

二、基本的搜索

1匹配所有(match_all)

328a83ae7d7408ea928d9eb580f7fb16.png

这里query代表的就是一个查询对象,里面编写具体的查询条件是怎样的:

  • match_all即代表了匹配所有,也就对应了上图中的例子。
  • match即匹配查询,怎么匹配可以自行说明。
  • term即词条查询,查询的时候不考虑分词。
  • ……除此之外,还有很多种查询类型。

其中查询条件根据查询类型的不同会有多种不同的写法,后续遇到了就说明。

现在主要讲解下match匹配查询和词条查询。

2匹配查询(match)

为了方便测试,我向索引库中添加了两条数据,现在索引库中一共有4条数据:

“小爱手机”,“大爱手机”,“超爱手机”以及“小爱电视”这4条。

6379b63ac4c45fd308254f877b61313f.png

match本身也就是匹配的意思,现在匹配和“小爱电视”相关的数据。

运行会发现“手机”相关的数据都被搜索出来了,这是为什么呢?

因为“小爱电视”先会被分词成“小”“爱”以及“电视”,和分词相关的数据都会被搜索出来。

其中响应的结果有个score属性,也就是得分的意思:score越高表示结果越匹配,

在电商网站上搜索某品牌手机,会发现:

  • 该品牌其它产品也会被搜索出来。
  • 手机壳啊什么的也会被搜索出来。

就是这么一个道理。

and关系

1f41bf1eb2f1dd0c14fafd8ccae72aac.png

operator翻译过来是运算,意思就是将分词结果通过and连接起来。

查询条件是“小爱电视”,但是其被分词为了“小”,“爱”和“电视”,当然具体是不是这样分词我不太清楚,但思路是一样的:

  • 如果不做说明默认or连接,那么查询到的数据的分词只要满足任意一个就可以。
  • 如果说明是and连接,那么查询到的数据分词必须要包含“小”,“爱”和“电视”。

3词条匹配(term)

e40607115f4a63d492d43f45ae5a6f67.png

我们在通过词条匹配查询“小爱电视”会发现结果竟然一条数据都没有。

老实说这个结果让我很是懵逼,想了好久才明白,还不确定对不对,我大致说下:

我们在创建索引库的时候,title这个字段名类型是text,它是会分词的,并且分词器是IK,这个昨天就详细说明过。

所以今天往索引库中添加数据“小爱电视”,它会被分词成“小”、“爱”和“电视”。

索引库中title这个字段是没有“小爱电视”这个词的,它被分词了。

  • 用match查询时本身也会将查询条件分词,所以会被查询到。
  • 而用term查询时不会将查询条件分词,所以查询不到。

最后

行有不得反求诸己,我是@刘小爱

一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

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

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

相关文章

一批信息查询网站汇总

一、查企业 1、全国企业信用信息公示 http://gsxt.saic.gov.cn/ 国内企业工商注册登记信息 2、信用视界 http://www.x315.com/ 全球企业信息 3、悉知 http://www.xizhi.com/ 国内企业信息含联系方式经营范围 4、纳税人 http://hd.chinatax.gov.cn/fagui/action/InitCredit.do 5…

C# 如何检测UDP是否被占用_如何检测我们博客网站是否启用了Gzip压缩?附2种方法...

一般都建议博客网站开启 Gzip 压缩,因为开启这个压缩后最多可以减少 70%的文件大小,从而减少通过网络传输的数据量以提高浏览的速度。那么如何检测我们博客网站是否启用了 Gzip 压缩呢?下面老古介绍 2 种检测方法,具体…

php下拉框 复原 提交之后_百度搜索资源平台(原百度站长平台)网站提交链接的详细教程...

有些同学经常问,为什么我文章明明原创的,但是百度老不收录?那么为了加快文章的收录速度,我们可以用好百度站长平台的链接提交功能。(进入方式如图)来看看, 百度站长平台的4种链接提交方式。一、站点地图提交当网站在建…

python如何下载5个网站视频_python爬网之教你轻松下载视频

项目背景: 作为程序媛的我,在疫情发生后就彻底宅了。没事的时候就打打游戏,看看电视剧,学学当大厨。 但在下载电视剧的时候发现,一个一个下载太麻烦了。这不符合程序媛的习惯。我的口号是“能拿程序完成的,…

怎么知道 网站是否直接明文保存密码_明文存储密码这种低级漏洞,谷歌也无法避免...

日前,谷歌公开承认其产品G Suite存在低级安全漏洞。G Suite管理控制台允许管理员为用户重置密码,然而该功能竟然以纯文本的形式明文存储用户的密码而非加密存储,如今该功能已被移除。今年3月份,Facebook 也承认以明文形式存储了数…

java 绑定域名_绑定域名到JavaWeb项目,由域名直接访问到网站首页

注意,如果要域名访问的话必须是80端口才能。localhost访问默认项目可以不用80端口也可以一:购买域名请移步到相关网站购买域名,我是在腾讯云买的。购买后记得实名认证,不然解析不了。二:解析域名大约七八分钟后&#x…

码支付如何对接网站_第四方聚合支付特色之一的轮询机制是怎么防风控的?

简单地说,聚合支付是融合了支付宝、微信支付、花呗、翼支付等多种支付方式的一种“包容性”支付工具。做支付系统一定不能脱离实际业务场景,更不能照搬其他公司方案。做聚合支付的服务商越来越多,为什么人们纷纷投身聚合支付行业?…

最炫表白网站html5源码_HTML5骏马奔跑动画

插件简介今天给大家分享一个非常新颖的HTML5动画,它是一匹骏马,在疾风中飞驰。马的外观是在Canvas上绘制而成,同时骏马在奔跑的时候从地面上飞溅上来很多泥土,这让骏马奔跑的效果更加逼真,这个动画可以改进的地方是可以…

动态网站的制作与设计_动态网站制作是什么?

企业动态网站制作,前些年是非常多企业选择制作这种网站,而且在咨询的过程中总会提到动态网站。在以前经常有客户会问中万网络:动态网站可以做吗?中万网络作为十几年做网站的老行家都会提供详细的说明。而随时时代的进步&#xff0…

java 代码生成框架_「代码生成器」ssm框架通用代码生成工具 - seo实验室

代码生成器做了好几年的.net,上半年开始做java,发现java框架确实非常牛逼。基本上可以封装成框架的都有成品。相比之下.net确实差很多。但是也只能说各有所长吧。做了俩三个月吧,发现通用代码确实很多。由于忙,没时间做工具&#…

arraylist java 排序_「arraylist排序」java ArrayList的两种排序方法 - seo实验室

arraylist排序1.ArrayList使用排序的初衷我们知道ArrayList的好处是可以不用限定容器的大小,他会根据元素的增加自己扩大。但是存储进去的数据类型都会变成object,虽然每个元素有自己的index,但不像数组的下标可以更加方便的操作。那我们平时…

tomcat出现404的原因_网络优化404页面没用吗?对于SEO会造成什么影响?

随着互联网的发展越来越丰富,做网络推广其实并不陌生。对于很多企业之间或者个人网站来说,同行业的SEO优化也变得越来越激烈了。细心地人会发现在网络优化中会有404页面的出现,但是很多人都不理解404页面,觉得可有可无&#xff0c…

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行

Quote:本文将讨论: 缓存和 Forms 身份验证 视图状态和会话状态 配置文件属性序列化 线程池饱和 模拟和设置配置文件本文使用了下列技术:.NET Framework、ASP.NET、Windows Server 2003本页内容LoadControl 和输出缓存 会话和输出缓存 Forms 身份验证…

网站服务器端口80改443,IIS7 IIS8 http自动跳转到HTTPS(80端口跳转443端口)

IIS7需要先确认是否安装 “URL REWRITE2 ” 伪静态模块 , 如果您已经安装可以跳过URL REWIRTE (伪静态模块)第一步: 选择站点, “URL 重写”,如果安装的是英文版的 应该是【Url rewrite】第二步: 添加 “ 空白规则”第三步:添加规…

网站设计的标准时代

本文观点:遵循国际网站标准(Web Standards)进行网站设计和改善。 阅读对象:网站设计人员、web应用开发人员 关键字:Web Standards、XML、XHML、CSS、DOM、DOCTYPE、Accessibility 前言 网络上的变革每天都在发生&#…

网站留言板防重复留言_StackOverflow 网站被攻击!

‍哈哈,如果你是被标题吸引进来了,别惊讶,今天是愚人节。码农最常用的三大网站之一 StackOverflow 网站昨天开始开启了愚人节模式,整个网站风格回到了远古时代,浓浓的 Flash Style,鼠标移动特效、跑马灯效果…

最大的脚本网站_信息流广告‘脚本概念篇’教你如何从0到1,写出爆量短视频脚本...

未来的一段时间将为大家介绍信息流脚本的方方面面,教你如何写出爆量的短视频脚本!主要包括:什么是脚本;脚本的作用;脚本的分类:短视频6要素;视频制作的全流程;分镜头脚本设计&#x…

前端页面中如何引入shell页面_网站建设中如何做页面布局

网站制作一年350元,五站合一,快速建站 ,www.sxjcwzjs.com,只需进入网站右上角注册快速建站即可(需要电脑登录注册),需要联系我吧!电话:13752214574,微信号:m1078582894在做网站面面布…

分页第一页用0还是1_白杨SEO:5000字从0-1拆解如何用知乎排名做精准引流和变现?...

短视频,自媒体,达人种草一站服务大纲如下:1、知乎排名原理解析2、做知乎排名具体步骤3、账号注册及定位(重要)4、用户需求关键词挖掘5、如何制作出一篇高质量内容?(核心)6、被动引流注意事项7、实战案例举例一、知乎排名原理解析1、关于知乎…

ASP.NET 网站路径

ASP.NET 网站路径 使用网站中的资源时,通常必须指定资源的路径。例如,您可以使用 URL 路径引用页面中的图像文件或网站中其他位置处的页面的 URL。同样,Web 应用程序中的代码可以使用基于服务器的文件的物理文件路径对文件进行读写操作。ASP.…