2013-08-03 155 views
-4

如何使用php和mysql使用多關鍵字搜索?如何使用php和mysql使用多關鍵字搜索?

我有一個產品表像這樣

關鍵字字段保存關鍵字ID

| id | name | keyword_ids | 
|112 | apple | 123,12,421,121| 
|113 | phone | 23,14,12,1 | 

和關鍵字表這樣

|id | name | 
|1 | white | 
|2 | eat | 

我想用一個產品的關鍵字字段找到類似的產品,我該怎麼做?

+1

您可以定義「同類產品」?產品至少有一個關鍵字或產品至少有兩個相同的關鍵字,或者產品的關鍵字完全相同? – invisal

+0

問題不明確.. – diEcho

回答

0

如果你使用這個數據結構設置,你可以使用FIND_IN_SET

SELECT * FROM `products` p 
LEFT JOIN `keyword` k ON FIND_IN_SET(k.`id`, p.`keyword_ids`) 
WHERE k.`name` IN (?,?,?) 

我建議你這樣做實際上是從許多一對多關係表連接產品關鍵字如:

product_has_keyword 

product_id | keyword_id 
------------------------ 
112  | 123 
112  | 12 
112  | 421 
112  | 121 

這樣,你可以使用索引聯接(這會快很多)