价格比较引擎在获取具有不同名称约定的相同产品时出现问题

时间:2016-02-10 11:05:47

标签: php mysql

我正在开发一个价格比较网站,并且有来自两个不同网站的两个表格,例如。一个来自snapdeal,一个来自infibeam。

表格结构如下,两个网站都相同。

产品名 productprice

我使用类似查询来搜索产品。

例如,问题。当我搜索“iphone 6s 16gb space grey”这是snapdeal中的产品名称而同一产品被命名为“apple iphone 6s(16gb)space grey”时。

如何从php中的两个不同表格对同一产品执行价格比较操作。

1 个答案:

答案 0 :(得分:0)

您需要使用MySQL中的LIKE之类的内容来搜索类似的产品。

所以你会做类似的事情:

SELECT * FROM `table_name` WHERE `productname` LIKE '%search_query%';

但老实说,有一种更好的方法可以解决这个问题。

你应该有一个像一个值的例子的表格结构:

productname   | productprice | productsearch
------------------------------------------
iphone 16gb   |          500 | iphone 16gb
iphone (16gb) |          450 | iphone 16gb

那么productsearch字段的目的是保持productname的值除去所有特殊字符(如括号)。

现在,当您提供搜索查询时,假设您使用的是PHP:

$search_query = str_replace(' ', '-', $search_query);
$search_query = preg_replace('/[^A-Za-z0-9\-]/', '', $search_query);
$search_query = preg_replace('/-+/', '-', $search_query);

现在$search_query将包含所有特殊字符的已清理字符串,现在apple iphone 6s (16gb) space gray - > apple iphone 6s 16gb space gray