我正在構建電子商務PC商店,並將所有產品的規格存儲爲列(因此RAM,處理器,顏色,品牌等都不同列)
我建立了搜索以查找產品並將其鏈接到人們可以查看產品及其所有信息的頁面
當有人查看某個產品時,我想要一個「類似產品」部分。
應該得到一個基於不同列的值,這些產品並得到最佳匹配
例如說我有產品表中的位置:我如何找到類似的行,這取決於SQL/PHP中的列值
+----+------+--------+-------+--------+--------+
| id | Name | Type | Brand | Colour | Memory |
+----+------+--------+-------+--------+--------+
| 1 | Name1| laptop | Asus | White | 2GB |
| 2 | Name2| laptop | Acer | Red | 4GB |
| 3 | Name3|computer| Hp | Blue | 3GB |
| 4 | Name4| laptop | Acer | White | 6GB |
| 5 | Name5| laptop | HP | Red | 4GB |
+----+------+--------+-------+--------+--------+
比方說,用戶在觀看產品編號1 然後按順序,最好的匹配結果將是:
+----+------+--------+-------+--------+--------+
| id | Name | Type | Brand | Colour | Memory |
+----+------+--------+-------+--------+--------+
| 4 | Name4| laptop | Acer | White | 6GB |
| 2 | Name2| laptop | Acer | Red | 4GB |
| 5 | Name5| laptop | Hp | Red | 4GB |
| 3 | Name3|computer| HP | Blue | 3GB |
+----+------+--------+-------+--------+--------+
所以我想,概括地說什麼,我問的是,如何將我選擇的所有行最匹配列的順序爲多少MATC hing列與當前行一致
究竟是如何與產品1有關的這張表,除了顯然是h aving id = 1意味着你不想在結果中使用「id = 1」? –
不,因爲他們正在查看產品id 1,所以根據您獲得「類似產品」的要求,在類似產品部分 – user3347769
中顯示的產品id 1無意義,不應在數據庫中進行比較列。您應該使用相似性分數(根據需求爲每列分配序數值,並將整行視爲一組)或基於距離的度量(例如曼哈頓距離)來確定相似的組。 –