雖然我不確定是否有一種簡單的方法來計算使用SQL的籃子相似度,但我認爲您只是試圖產品推薦。
您可以根據當前購物籃制定產品推薦的查詢。您可以通過以下方式執行此操作:
- 查找包含當前客戶籃中至少一項的任何籃子。
- 將結果限制爲屬於同一類別的產品。
可以取得與下面的查詢相應的信息:
SELECT b1.basket_id, b1.product_id, b1.quantity, p1.product_category FROM baskets b1
INNER JOIN products p1 ON p1.product_id = b1.product_id
WHERE b1.product_id IN
(
SELECT b2.product_id FROM baskets b2
INNER JOIN products p2 ON p2.product_id = b2.product_id
WHERE b2.basket_id = $basket
AND p2.product_category = p1.product_category
)
AND b1.basket_id != $basket;
這將在所有其他籃子共有至少回到籃下ID,產品ID,數量和產品類別ID的所有項目一個產品與您選擇的籃子。它還會過濾結果,以便建議的產品始終與來源產品處於同一類別。
這裏有一個例子:
baskets table:
basket_id | product_id | quantity
1, 2, 1
1, 1, 2
1, 3, 5
2, 5, 1
2, 6, 1
3, 1, 1
3, 2, 1
3, 4, 1
products table:
product_id | product_name | product_price | product_category
1, 'cat1 prod1', 14, 1
2, 'cat1 prod2', 1.5 1
3, 'cat1 prod3', 2, 1
4, 'cat2 prod1', 22, 2
5, 'cat2 prod2', 6, 2
6, 'cat2 prod3', 45, 2
7, 'cat3 prod1', 24, 3
8, 'cat3 prod2', 55.4, 3
9, 'cat3 prod3', 22, 3
result of query:
basket_id | product_id | quantity | product_category
3, 1, 1, 1
3, 2, 1, 1
希望這是一些對你有用的。
這是一個有趣的問題!你能更具體地定義如何計算「相似」?我仍然對如何工作有點模糊。 – Anson
我會在我們的籃子裏拿到所有物品並對它們進行比較。 假設他有3根棍子和2塊石頭。我有一根棍子和一塊石頭。他的籃子中有60%是棍棒,其中40%是石塊。 因此我的公式是(1/3 * 50)+(1/2 * 50),因爲我的棍棒和寶石的分割率爲50%/ 50%。相似度是41.667% 可能有更好的方法來計算相似度,但目前,這是我的想法。 – voldomazta