2012-08-30 54 views
0

我正在使用PHP編寫ajax搜索功能。它的工作正常,但有過濾的結果一點問題,PHP MYSQL LIKE匹配描述中的多個詞

我有產品說明像下面

POWER CORD C13-C14 SVT 250V 10AMP GREEN JACKET 8 FEET 

但是,當用戶搜索電源線綠色沒有結果的表現。我認爲這是因爲上述詞彙的順序不同。

這裏是我的SQL代碼 - $ QR是用戶搜索詞

SELECT 
     product_name,product_desc 
     FROM j25_virtuemart_products,j25_virtuemart_products_en_gb 
     WHERE   
     j25_virtuemart_products.virtuemart_product_id =j25_virtuemart_products_en_gb.virtuemart_product_id 
     AND j25_virtuemart_products.published=1 
     AND (product_name LIKE '%$qr' OR product_desc LIKE '%$qr 

當用戶搜索電源線綠色我需要得到電源線C13-C14 SVT 250V 10AMP綠夾克8 FEET作爲一個建議。任何人都可以告訴我如何編寫查詢來獲得這些結果。謝謝

回答

3

您必須使用FULL TEXT搜索。在使用之前,請確保檢查數據庫引擎是否支持全文。你也必須索引字段,如標題,描述,無論你必須支持全文。

你可以參考

還要注意的是:

  • MySQL是用它不贊成忌,去mysqliPDO
  • 使用參數化查詢
+0

工作很好..感謝很多關於這個 選擇 \t PRODUCT_NAME,product_desc \t FROM j25_virtuemart_products_en_gb \t WHERE MATCH(product_desc,PRODUCT_NAME)AGAINST( ' 「$ QR」。') –

5

LIKE運算符在這裏不會幫你。您需要查看FULLTEXT searching。如果你不願意使用MyISAM(它的確有它的drawbacks),你可以看看Sphinx等替代方案。

+0

你有一些樣品:) –

+0

@SunethKalhara看到我添加到我的文章的鏈接。這應該讓你開始。儘管您應該使用PDO或MySQLi擴展,而不是示例中使用的默認mysql函數。 –