ES实战从零搭建高性能商品搜索系统

搜索这个特性可以说是无处不在,现在很少有网站或者系统不提供搜索功能了,所以,即使你不是一个专业做搜索的程序员,也难免会遇到一些搜索相关的需求。搜索这个东西,表面上看功能很简单,就是一个搜索框,输入关键字,然后搜出来想要的内容就好了。

搜索背后的实现

  • 可以非常简单,用一个SQL,LIKE一下就能实现
  • 也可很复杂,不说百度谷歌这种专业做搜索的公司,其他非专业做搜索的互联网大厂,搜索团队大多是千人规模,这里面不仅有程序员,还有算法工程师、业务专家等等

区别仅是搜索速度快慢及搜出来的内容好坏。

倒排索引(Inverted Index)

数据大多存数据库,用SQL的LIKE也能实现匹配搜出结果,为啥还专门做搜索系统?

为啥数据库不适合做搜索?

搜索的核心需求是全文匹配,对此,数据库索引派不上用场,那只能全表扫描。全表扫描慢,还需要在每条记录上做全文匹配,即一个字一个字比对,就更慢。所以,使用数据做搜索,性能差。

ES咋解决搜索问题?假设两个商品:

  • 烟台红富士苹果
  • 苹果手机iPhone XS Max
DOCID SKUID 标题
666 100002860826 烟台红富士苹果 5kg 一级铂金大果 单果230g以上 新鲜水果
888 100000177760 苹果 Apple iPhone XS Max (A2104) 256GB 金色 移动联通电信4G手机 双卡双待

DOCID就是唯一标识一条记录的ID,类似数据库主键。为支持快速全文搜索,ES对文本采用倒排索引。ES中这两条商品数据倒排索引:

</
TERM DOCID
烟台 666
红富士 666
苹果 666,888
5kg 666
一级 666
铂金 666
大果 666
Apple 888
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值