2012-07-03 3 views
0

Для проекта, над которым я работаю, я показываю твиты, которые я получаю от API Streaming от Twitter. Перед отображением твита мне нужно проверить каждое слово на список вложенных в черный список слов.Фильтрация контента на основе слов

В настоящее время у меня есть все вложенные в черный список слова в коллекции MongoDB.

Очевидным способом, который приходит мне на ум, является взорвать твит, чтобы получить каждое слово, а затем для каждого слова в чириканье проверьте, содержит ли коллекция черного списка это слово.

Однако это будет означать ~ 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

Смежные вопросы