这是一个奇怪的问题,但我会尽力解释它。
我们说我有以下两个表:
table: cars
+---------------+------------+----------------+--------------+
| color | size | capacity | origin |
+---------------+------------+----------------+--------------+
table: users
+----------------+---------------+--------------------+-----------------+
| desired_colors | desired_sizes | desired_capacities | desired_origins |
+----------------+---------------+--------------------+-----------------+
显然,汽车餐桌将由具有颜色,尺寸,容量和来源的独特汽车组成。
在用户表格中,用户可以选择他们想要的多种颜色,他们想要的多种尺寸,他们想要的多种容量以及他们想要的多种来源。
现在,我想知道获得比赛得分的最佳方法。在用户期望的特征和每个车辆之间。这样,用户就可以看到他们想要的汽车的最佳匹配。
我对如何做到这一点有一些想法,但我想知道这里的每个人都认为这是最好的方法。我认为最好的方法是选择一场比赛'表格显示user_id
,car_id
和match_score
之间的匹配项 - 但我不确定如何以及何时运行这些计算并保存此数据。另一件需要考虑的事情是,如果我决定改变分数的标准。
无论如何,我知道这是一个奇怪的问题,我可能没有得到很多答案,但只是希望能够激起争论,看看是否有人有任何好主意。
全部谢谢:)
答案 0 :(得分:1)
我只是在查询中确定我的匹配,而不是将其存储在表中。如果您的数据集预计很大,预先计算匹配可能会更有效,但很可能,它会过早优化。所以,我要做的是在用户登录时加载所需的功能,然后运行如下的查询:
select *,
if(color in ('green', 'red', blue', ...), 10, 0)
+ if(size in (...), 10, 0)
+ if(capacity in (...), 10, 0)
+ if(origin in (...), 10, 0) as score
from cars
where color in ('green', 'red', blue', ...)
or size in (...)
or capacity in (...)
or origin in (...)