关键词采集软件(【案例分析】如何实现搜索,电商网站内部的搜索功能的话)

优采云 发布时间: 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就是解决这个场景的工具;

  参考

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线