我将把它分成两部分:
我有一个用户列出了他想要的产品“功能”。要求用户从 1-10 对这些特征进行排名。我还有一张摆满产品的桌子。这些产品中的每一个都有不同的功能。有些产品将具有 1-10 的所有功能,但有些产品只有其中的几个。我想确定哪个产品与用户的排名最匹配,并为用户提供一个有序的结果集,最好的匹配在前,最差的匹配在后。
上述查询实际上只是用户正在做的事情的一部分。用户还提供其他搜索标准(例如产品类别、价格等)以及特征排名。因此,我希望功能匹配仅适用于通过这组过滤器的产品。我将如何结合这些?
我发现了一些类似的问题this和this,但它们还不够接近,我无法弄清楚如何将这些解决方案应用于我的情况。
涉及的表如下所示:
产品(ID,产品)
特征(id,特征)
product_features (id, product_id, feature_id)
并且用户将通过这样的数组提交他的搜索(其中键实际上是特征 ID,排名是值):
[users_features] => Array
(
[1] => Array
(
[rank] => 9
)
[2] => Array
(
[rank] => 1
)
[3] => Array
(
[rank] => 3
)
(现在这将是一个 10 项数组,但将来可能会改变)
)