目前我正在處理一個電子商務項目的有點大mySQL事務數據庫。我們從電子商店獲得包括銷售產品的數據。每個電子商店都會添加有關產品之間相似性的信息,並將其列爲組。所以,例如商店A發送信息:mySQL數據庫:分離/集羣(?)數據
- 組1:iPhone藍色,黑色的iPhone,iPhone的綠色
- 組2:iPad的藍色,黑色的iPad,iPad的綠色等
另一個電子商店發送該種信息:
- 3組:iPhone粉紅色,黑色iPhone
- ģ roup 4:iPad的藍色,iPad的粉紅色
每個產品存儲在表產品:(重要:該表具有約150 000 000行)
Id | Name
------------------
1 | iPhone blue
2 | iPhone black
3 | iPhone green
4 | iPhone pink
5 | iPad blue
6 | iPad black
7 | iPad green
8 | iPad pink
此外,還有一個表基團與上述基團:(M:N的關係)
Id | Id_product | Group
--------------------------
1 | 1 | 1
2 | 2 | 1
3 | 3 | 1
4 | 5 | 2
5 | 6 | 2
6 | 7 | 2
7 | 4 | 3
8 | 1 | 3
9 | 5 | 4
10 | 8 | 4
現在,問題是,組1 + 3和組2 + 4應合併在一起。
解決此問題的當前(可怕)解決方案基於獲取產品的所有組(通過查詢中的GROUP_CONCAT函數)以及這些組中的所有產品。然後更新表格組以將這些組合併成一個。
這種方法的主要問題是:
- 很成問題的計算複雜度。
- 從電子商店獲得的團體可能是錯誤的(!)。想象一下這個羣體:
- Group5:iPhone黑色,iPad黑色。考慮到這個羣體,整個分離過程是錯誤的。最終你會得到一個與iPhone和iPad在一起的組合(這是錯誤的)。
所以,現在,終於,這個問題: 任何想法如何解決這個問題?只是提示/技巧就夠了,我只是完全被我缺乏知識所困擾。
我在玩模糊哈希算法/ k-均值聚類,但在我看來,它不適合這個問題。模糊哈希似乎正在考慮產品的名稱(這對iPhone來說可能很好,但是不能用T恤形象化,他們的名字不是很「精心準備」,所以很難從名稱)。我錯過了什麼嗎?
那麼,有什麼想法?
無論如何,只是爲了解決這個問題,有可能引入不同的數據庫解決方案,這是沒有問題的。
感謝提前:)
Chmelda