2012-07-03 74 views
0

對於我正在處理的項目,我會顯示來自Twitter Streaming API的推文。在顯示推文之前,我需要檢查每個單詞與列入黑名單的單詞。根據單詞過濾內容

目前,我有一個MongoDB集合中的所有黑名單單詞。

我想到的一個顯而易見的方式是,將推文分解爲每個單詞,然後對推文中的每個單詞檢查黑名單集合是否包含該單詞。

但是,這意味着每個tweet會顯示20個數據庫調用。

有沒有更好的方法來解決這個問題?

+0

不是你問的解決方案,但值得一讀:http://stackoverflow.com/questions/1327112/blacklist-of-words-on-content-to-filter-message –

回答

1

我會從數據庫中提取所有黑名單單詞,將它們作爲字符串存儲在一個變量中(用|分隔)並使用preg_match()來查看推文中是否有任何內容。

$blacklist = 'blacklisted|words'; 
if (preg_match('/\b(' . $blacklist . ')\b/i', $tweet)) 
{ 
    // Don't show 
} 
else 
{ 
    // Show the tweet 
} 
+0

謝謝。這可能會快很多,因爲我只需要對數據庫進行單個查詢。 – xbonez