如何自动适应结果?
我刚刚想问这个问题的时候,我都不知道如何起标题。
问题是这样的。我要给用户推荐十个结果。
用车来举例子。用户喜欢SUV 宝马 黑色 的车。
我的条件是 SUV 宝马 黑色 但是有时候可能得到的结果没有十个。
这个时候就需要把 黑色条件去掉。然后再看结果是否有十个。如果没有继续去掉SUV条件。然后继续查找。直到得到的结果有10个。 这里不需要考虑去掉条件的顺序。你们有什么办法吗? 我想到的时候只能是循环了?感觉效率不是很好
把所有有关数据都进行匹配度或者说是权重的计算(这一步如何实施,要看数据是以什么形式存储在什么数据库中),然后按照这个值倒叙取前十个。
你这不是一个查询条件的题目,感觉更像是一个推荐算法的题目 :joy:
现在有很多开源的内容推荐引擎,阿里也有付费的智能推荐服务,试试换个角度找解决办法。
这种需求可以用搜索引擎满足;比如 elasticsearch:
同样以车为例,将车的相关属性(品牌、型号、车辆类型、能源类型、颜色、价格 等)存储在Es中
然后用
should
组合你的条件去查询,获取分数前10的结果即可es 满足楼主的需求
完美解决就是 es 不完美就是自己写循环 ,看工期 和产品要求 推荐需要达到怎么样个水平,时间允许可以从头开始学 毕竟学会了都是你自己的 如果要求低就自己写个循环差不多就得了
楼上很多同行都说了方案,如果需求简单,可以不用ES来实现。如果并发低,可以直接通过查库来获取,根据搜索条件获取结果条数,如果条件比较多,我觉得需要需要结合基础算法来做,比如说二分法,例如5个条件,先查前3个条件是否符合结果数,符合继续往下查找,不符合则向上查找,直至获取到符合最低条数的结果集;当然你的条件很少2-3条,完全也可以用按条件数递减查询;又或者你也可以维护条件与结果数集合,在创建、编辑已上架产品时,做订阅来维护这个集合,通过集合直接获取结果集ID,根据ID来查询。