如何自动适应结果?

我刚刚想问这个问题的时候,我都不知道如何起标题。:joy:
问题是这样的。我要给用户推荐十个结果。
用车来举例子。用户喜欢SUV 宝马 黑色 的车。
我的条件是 SUV 宝马 黑色 但是有时候可能得到的结果没有十个。
这个时候就需要把 黑色条件去掉。然后再看结果是否有十个。如果没有继续去掉SUV条件。然后继续查找。直到得到的结果有10个。 这里不需要考虑去掉条件的顺序。你们有什么办法吗? 我想到的时候只能是循环了?感觉效率不是很好

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 15
AloneUtopia

这种需求可以用搜索引擎满足;比如 elasticsearch:

同样以车为例,将车的相关属性(品牌、型号、车辆类型、能源类型、颜色、价格 等)存储在Es中

然后用 should 组合你的条件去查询,获取分数前10的结果即可

7个月前 评论
xiaofeishu (楼主) 7个月前
巴啦啦 7个月前
AloneUtopia (作者) 7个月前

把所有有关数据都进行匹配度或者说是权重的计算(这一步如何实施,要看数据是以什么形式存储在什么数据库中),然后按照这个值倒叙取前十个。

7个月前 评论
xiaofeishu (楼主) 7个月前
GeorgeKing (作者) 7个月前
xiaofeishu (楼主) 7个月前
Mutoulee

你这不是一个查询条件的题目,感觉更像是一个推荐算法的题目 :joy:

现在有很多开源的内容推荐引擎,阿里也有付费的智能推荐服务,试试换个角度找解决办法。

7个月前 评论
xiaofeishu (楼主) 7个月前
ShiKi

es 满足楼主的需求

7个月前 评论

完美解决就是 es 不完美就是自己写循环 ,看工期 和产品要求 推荐需要达到怎么样个水平,时间允许可以从头开始学 毕竟学会了都是你自己的 如果要求低就自己写个循环差不多就得了

7个月前 评论
xiaofeishu (楼主) 7个月前

楼上很多同行都说了方案,如果需求简单,可以不用ES来实现。如果并发低,可以直接通过查库来获取,根据搜索条件获取结果条数,如果条件比较多,我觉得需要需要结合基础算法来做,比如说二分法,例如5个条件,先查前3个条件是否符合结果数,符合继续往下查找,不符合则向上查找,直至获取到符合最低条数的结果集;当然你的条件很少2-3条,完全也可以用按条件数递减查询;又或者你也可以维护条件与结果数集合,在创建、编辑已上架产品时,做订阅来维护这个集合,通过集合直接获取结果集ID,根据ID来查询。

7个月前 评论
xiaofeishu (楼主) 7个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!