ruby on rails数据库条目匹配,存储

时间:2011-04-30 02:04:06

标签: mysql ruby-on-rails ruby database

这是一个奇怪的问题,但我会尽力解释它。

我们说我有以下两个表:

table: cars

+---------------+------------+----------------+--------------+
|     color     |    size    |    capacity    |    origin    |
+---------------+------------+----------------+--------------+

table: users

+----------------+---------------+--------------------+-----------------+
| desired_colors | desired_sizes | desired_capacities | desired_origins |
+----------------+---------------+--------------------+-----------------+

显然,汽车餐桌将由具有颜色,尺寸,容量和来源的独特汽车组成。

在用户表格中,用户可以选择他们想要的多种颜色,他们想要的多种尺寸,他们想要的多种容量以及他们想要的多种来源。

现在,我想知道获得比赛得分的最佳方法。在用户期望的特征和每个车辆之间。这样,用户就可以看到他们想要的汽车的最佳匹配。

我对如何做到这一点有一些想法,但我想知道这里的每个人都认为这是最好的方法。我认为最好的方法是选择一场比赛'表格显示user_idcar_idmatch_score之间的匹配项 - 但我不确定如何以及何时运行这些计算并保存此数据。另一件需要考虑的事情是,如果我决定改变分数的标准。

无论如何,我知道这是一个奇怪的问题,我可能没有得到很多答案,但只是希望能够激起争论,看看是否有人有任何好主意。

全部谢谢:)

1 个答案:

答案 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 (...)