关于商品搜索功能,类似京东那样的SKU过滤,SPU展示的实现方式

问题咨询 · T19059 · 于 4年前 发布 · 3317 次阅读

先说需求: 最近在做商品搜索的SKU-SPU模块,目标是像京东搜索结果页那样的展示方式, 比如搜"iphone",会出现目标商品,不同颜色版本的SKU会聚合成一个坑位展示; 如果搜"红色iphone",会过滤掉不符合的SKU后再聚合成SPU展示.

我目前想到的办法是搜索引擎中存储的SKU维度的数据,每次搜索时讲符合条件的商品拉出50页(数量达到数千个),同时聚合spu_id,在内存中取第一页的spu_id对50页商品数据进行group by操作,这种方式可以实现需求,但是传输量和损耗巨大,每次为了一页数据需要算50页数据.

对于这部分功能我没有相关的处理经验,请问大家有更好的做法吗?困扰良久,望大家指点

共收到 9 条回复
Fecmall#14年前 0 个赞

一个spu含有多个sku,然后分类页只显示一个sku,是吧?

Fecmall#24年前 0 个赞

fecshop用的mongodb,aggregate来实现的

Fecmall#34年前 0 个赞

fecmall的实现: fecmall 产品

不要用mysql,可以mongodb和elasticsearch

Fecmall#44年前 0 个赞

es等搜索引擎,只要搜索个数不超过一万条,很轻松的。

T19059#54年前 0 个赞

一个SPU含有多个SKU,分页显示SPU,每个SPU下有多个SKU,可以通过鼠标切换图片来切换. 那意思是每次取数据都要从es里拉全量几千个SKU出来到服务的内存中进行SPU group by 吗? 这样是不是有点不太划算呢?每次为了一页数据要取很多页数据,然后丢弃掉大部分

Fecmall#64年前 0 个赞

你理解错了,搜索引擎直接出结果的,不需要你进行计算。

多去研究一下elasticsearch的文档

T19059#74年前 0 个赞

你大概说的是elasticsearch的aggregation吧,你可能理解错了,我是说返回的查询结果,不是聚合结果,而且局和结果不支持分页的.其实我的问题就是elasticsearch索引按照SKU存储,那如果用elasticsearch去分页的话必定是按SKU数量分页的,然而页面展示需要聚合成SPU后展示,分页是按照SPU数量来分页的,如果从es取单页SKU,内存做SPU聚合,那会不够一页的,如果像fecmall那样,直接拉出来很多页的数据再聚合感觉又有点浪费,毕竟SKU数量多的话可能每次都是好几十页的数据

Fecmall#84年前 0 个赞

1.搜索引擎不像mysql,可以分页,搜索引擎都是搜出结果,自己分页

2.你这个需求,得自己重新去设计一下表结构,自己思考吧。

3.长长的句子就像英语四级阅读理解一样难读,只读懂一个大概,自己思考吧/

T19059#94年前 0 个赞

哎.本意是想借助你这个平台咨询一些同样从事电商行业的朋友们,看来还是不够活跃呀

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics