2013-10-03 48 views
0

我一直在尋找解決方案以下,但迄今沒有運氣。PHP/SQL更新字段如果選擇匹配

我有一個頁面,其中包含名爲「功能」的文本區域中的產品功能列表 - 這是從我的數據庫中的表填充的。

當我點擊一個按鈕時,運行下面的代碼,代碼做的是拿我列表中的每個單詞,檢查「description」字段是否包含該單詞,如果是,那麼它將該單詞放入一個名爲「特徵」。

這工作正常,但我有3000個不同的「功能」和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); 
} 

在此先感謝! Chris

+0

只需使用全文:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html – RePRO

+0

感謝RePRO,能否給我一個簡單的例子,我是新手。 – Walshie1987

回答

0

如果我是你,當將產品輸入到數據庫並將它們作爲單獨的字段(或可能在另一個表中)存儲時,我會進行這種關鍵字搜索。或者可能使用一個緩存系統,所以你不必每次都爲每一件產品做這件事。

+0

問題是這些產品是在晚上自動導入的,我沒有手動輸入它們 – Walshie1987

+0

在這個過程中,每次輸入記錄時都沒有辦法查找關鍵字嗎?如果不是,也許每天都要執行一項定期檢查所有沒有指定功能的產品的任務?否則,緩存可能是我認爲最好的選擇 – Jonathon

相關問題