如何自动适应结果?

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15

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

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

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

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

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

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

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

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

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

es 满足楼主的需求

7个月前 评论

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

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

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

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

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