0

我一直在寻找以下问题的解决方案,但到目前为止还没有运气。

我有一个页面,在文本区域中有一个产品特性列表,名为“特性”——这是从我数据库中的一个表中填充的。

当我单击一个按钮时,下面的代码运行,代码所做的是获取列表中的每个单词,检查“描述”字段是否包含该单词,如果包含,则将该单词放入名为“功能”的字段中。

这工作正常,但我有 3,000 个不同的“功能”和 100,000 个产品描述要检查 - 所以运行需要花费时间并且经常超时。

谁能建议我如何加快速度?基本上逻辑是:

如果“描述”包含“单词”,则放入“单词”

我在考虑可能将所有单词放在一个数组中,但我不知道如何确定数组中的哪些单词在“描述”中并返回这个值。

所有“特征”都存储在我的 desc_lookup 表中,用逗号分隔,因此可以轻松地将它们添加到数组中。

$features = explode("\n",$_POST["features"]);
$features = str_replace("\r","",$features);

foreach($features as $feature)
{
    $sql = "UPDATE `".$config_databaseTablePrefix."products` 
           SET features = CONCAT(features, '".$feature.",') WHERE `description` LIKE
           '%".database_safe($feature)."%'";

    database_queryModify($sql,$result);
}

提前致谢!克里斯

4

1 回答 1

0

如果我是你,我会在将产品输入数据库时​​进行这种关键字搜索,并将它们存储为一个单独的字段(或者可能在另一个表中)。或者可能使用缓存系统,这样您就不必每次都为每个产品都这样做。

于 2013-10-03T14:19:59.790 回答