PHP MYSQL LIKE用于匹配描述中的多个单词

时间:2012-08-30 09:07:29

标签: php mysql

我正在使用PHP编写ajax搜索功能。它工作正常,但过滤结果几乎没有问题,

我的产品说明如下

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

当用户搜索电源线绿色时,我需要 POWER CORD C13-C14 SVT 250V 10AMP GREEN JACKET 8 FEET 作为建议。任何人都可以告诉我如何编写查询以获得这些结果。谢谢

2 个答案:

答案 0 :(得分:5)

LIKE运算符不会帮助你。您需要查看FULLTEXT searching。如果您不愿意使用MyISAM(它确实有drawbacks),您可以查看Sphinx等替代方案。

答案 1 :(得分:3)

您必须使用全文搜索。在使用它之前,请确保检查数据库引擎是否支持FULL Text。此外,您必须索引标题,描述等字段,无论您有什么支持全文。

你可以参考

另请注意:

  • 不推荐使用Mysql以避免使用它,请转到mysqliPDO
  • 使用参数化查询