如何最好地搜索僅包含用戶搜索標籤的項目,無論是具有所有標籤還是隻包含一些標籤?如何在MySQL中使用PHP和JS搜索特定標籤
因此,例如:
item | param
-----------------
1 | a
1 | b
1 | c
2 | b
2 | c
2 | d
3 | c
3 | d
3 | e
4 | d
4 | e
4 | f
項目1具有A,B,C;項目2有b,c,d;第3項有c,d,e;項目4具有d,e,f
用戶輸入到帶有參數a,c,d,e,g的搜索欄中; 1和2有b和4有f,它們在用戶參數之外。所以只有第3項,因爲它只有c,d,e而沒有別的,這3個參數屬於用戶的參數。它沒有a或g,但沒關係。
我只能想到一些方法來做到這一點。我能想到的最好的方法是:
1:在另一個表中,說出物品的主表,存儲這個物品具有的標籤的數量。
2:循環查詢整個表,使用參數如WHERE (param=$user_para[$key])
一次參數。每次參數匹配時,項目標識符都會被添加到數組中。
3:循環結束後,算法會計算一個項目ID出現在數組中的次數,並與主表中的變量數進行比較。如果它小於存儲的數字(所以用戶想要的標籤不在該項目中),那麼數組將刪除所有該項目ID並檢查下一個。
我覺得這樣還是很糟糕的。什麼是更好的解決方案?
我把JS/AJAX放在標籤中,因爲我想知道在前端可以做些什麼,而不是在後端加上更多的壓力。
請說明。如果用戶搜索'c,d,e,f,g,h',那麼具有'c,d,k'的項目是否匹配? – BeetleJuice
不,因爲k不在用戶的搜索參數 – J13t0u
好吧,我明白了。我的方法與你有些不同,但應該有效。 – BeetleJuice