关键词采集软件(【案例分析】如何实现搜索,电商网站内部的搜索功能的话)
优采云 发布时间: 2022-04-10 09:09关键词采集软件(【案例分析】如何实现搜索,电商网站内部的搜索功能的话)
基本没说什么,我们来看看
1 概述
百度:比如我们想找任何信息的时候,我们都会去百度搜索,比如我们喜欢的一部电影,或者我们喜欢的一本书,或者我们感兴趣的一条新闻。(指搜索的第一印象)
百度!=搜索,这是错误的
垂直搜索(站内搜索)
搜索是在任何场景中找到您想要的信息。这时候你会输入一个你要搜索的关键词,然后期望能找到一些与这个关键词相关的信息
2 数据库搜索
数据存储在数据库中
当然,如果从技术角度考虑,如何实现搜索,以及电子商务内部的搜索功能网站,可以考虑使用数据库进行搜索。
2.1 案例 - 电子商务系统搜索
如果使用数据库进行处理,不管数据库的全文索引,如果有1000万个产品,那么基本上需要1000万次搜索,并且产品的name字段的整个字符串都需要每次都加载。并一一寻找。
使用数据库进行搜索不是很可靠。一般来说,性能会很差。
3 全文搜索 & Lucene 3.1 全文搜索3.1.1 场景:搜索“生化机”
(有可能是手颤是错的,本来是生化危机),不过我期待右边的4条记录出来
有4条数据
将每条数据拆分为术语。比如《生化危机电影》拆分成:生化危机、危机、电影关键词(拆分结果与策略算法有关)
每个 关键词 将对应一个收录此 关键词
的数据 ID
搜索时,直接匹配这些关键词,就可以得到收录关键词的数据
这个过程称为全文检索。条目拆分和条目对应的ID是倒排索引的基本原理
比较数据库的缺陷
数据库中有100万条数据。按照之前的思路,实际上需要扫描100万次,每次扫描都需要匹配文本的所有字符,确认是否收录搜索到的 关键词 ,不能拆解搜索词检索
使用倒排索引
对于搜索,假设有100万条数据,拆分词,假设有1000万词,那么在倒排索引中,有1000万行,我们可能不需要搜索1000万次。
可以说,我们第一次搜索的时候,可以找到这个搜索词对应的数据。
也可能是第 100 次,或者第 1000 次
3.2 Lucene
是一个jar包,里面收录各种打包的倒排索引和搜索代码,包括各种算法
开发java时,可以引入lucene jar,然后基于lucene的API进行开发
有了lucene,我们可以索引已有的数据,lucene会给我们本地磁盘上索引的数据结构
此外,我们还可以使用lucene提供的一些函数和API来定位磁盘配额
国外Elasticsearch的适用场景
(1)维基百科,类似于百度百科,牙膏,牙膏维基百科,全文搜索,高亮,搜索推荐
(2)卫报(国外新闻网站),类似搜狐新闻,用户行为日志(点击、浏览、采集、评论)+社交网络数据(XX新闻相关浏览量),数据分析,给每条新闻文章的作者,让他知道自己文章的公众反馈(好、坏、流行、垃圾、鄙视、崇拜)
(3)Stack Overflow(国外程序异常讨论论坛),IT问题,程序报错,提交吧,会有人跟你讨论解答,全文搜索,搜索相关问答,程序错误,它会将错误消息粘贴到其中,并搜索相应的答案
(4)GitHub(开源代码管理),搜索千亿行代码
(5)电子商务网站,搜索产品
(6)log数据分析,logstash采集log,ES做复杂数据分析(ELK技术,elasticsearch+logstash+kibana)
(7)商品价格监控网站,用户设置某个商品的价格阈值,当阈值低于阈值时,向用户发送通知消息,如订阅牙膏监测,如果高露洁牙膏家庭套装50元以内,告诉我,我会买的
(8)BI系统,商业智能,商业智能。比如有一个大型的商场群,BI,分析用户消费量趋势和某区域用户群构成近3年,产品发布多篇相关报道,在**区,近3年年消费额增长100%,85%的用户群体为高级白领。开新商城. ES做数据分析挖掘,Kibana做数据可视化
国内
(9)国内:站点搜索(电商、招聘、门户等)、IT系统搜索(OA、CRM、ERP等)、数据分析(一种流行的ES使用场景)
Elasticsearch 的特点
(1)可以作为*敏*感*词*分布式集群(上百台服务器)技术,处理PB级数据,服务大公司;也可以单机运行,服务小公司
(2)Elasticsearch不是新技术,它主要结合了全文检索、数据分析和分布式技术,形成了独特的ES;lucene(全文检索)、商业数据分析软件(也有)、分布式数据库(mycat)
(3)对于用户来说,开箱即用,非常简单。作为中小型应用,3分钟直接部署ES,然后就可以当系统使用了生产环境中。数据量不太大,操作也不太复杂
(4)数据库的功能对于很多领域(交易、各种在线交易操作)是不够的;特殊功能,比如全文检索、同义词处理、相关性排名、复杂数据分析、海量数据的近实时处理;Elasticsearch作为传统数据库的补充,提供了很多数据库无法提供的功能
Elasticsearch功能(1)分布式搜索引擎和数据分析引擎
搜索:百度、网站网站搜索、IT系统搜索
数据分析:电子商务网站,最近7天牙膏销量前10名;新闻网站,上个月访问量最高的前 3 个新闻版块是哪个
分布式、搜索、数据分析
(2)全文搜索、结构化搜索、数据分析
全文搜索:我要搜索产品名称中收录牙膏的产品,select * from products where product_name like "%toothpaste%"
结构化搜索:我要搜索归类为日化产品的产品,select * from products where category_id='日化产品'
部分匹配、自动完成、搜索纠错、搜索推荐
数据分析:我们分析每个产品类别下有多少产品,按category_id从products group中选择category_id,count(*)
(3)海量数据的近实时处理
分布式:ES可以自动将海量数据分发到多台服务器进行存储和检索
海联数据处理:分布式后,可以使用大量服务器存储和检索数据,自然可以实现对海量数据的处理
近实时:检索一条数据需要1小时(这不是近实时,离线批处理,批处理);数据在第二层进行搜索和分析
分布式/海量数据的反面:lucene,一个独立的应用,只能在单台服务器上使用,只能处理单台服务器最多可以处理的数据量
4 Elasticsearch 的意义
我们可以使用lucene开发一个搜索服务并部署在一台机器上,但是它不能解决数据量增加时出现的问题(图右侧)。
那么elasticsearch就是解决这个场景的工具;
参考