0

我正在使用 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作为建议。谁能告诉我如何编写查询以获得那种结果。谢谢你

4

2 回答 2

5

LIKE 运算符不会在这里为您提供帮助。您需要查看FULLTEXT 搜索。如果您不愿意使用 MyISAM(它确实有缺点),您可以考虑使用Sphinx等替代方案。

于 2012-08-30T09:09:02.483 回答
3

您必须使用全文搜索。在使用它之前,请确保检查您的数据库引擎是否支持全文。此外,您必须索引标题、描述等字段,以支持全文。

你可以参考

另请注意:

  • 不推荐使用 Mysql 避免使用它,继续使用mysqliPDO
  • 使用参数化查询
于 2012-08-30T09:17:09.807 回答