我會分成兩個部分本的最佳匹配:查找MySQL的用戶排名列表
我有一個用戶使用產品的列表「功能」,他的慾望。要求用戶對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項陣列的權利,但可能會在未來改變)
)
我在這裏看到的一個問題是,具有所有功能的產品將總是排在列表的頂部 - 除非那可以。 –
您需要一種將排名應用到功能的方法。例如,如果一個產品只匹配rank = 1,但另一個匹配rank = 2和3,選擇哪個? –
@EricPetroelje沒關係,如果所有具有所有功能的產品排在最前面。 – HipN