我正在使用Twitter API流每分钟收集数千条tweet。它们需要与关键字列表匹配(可以包含空格)。
这是我当前的方法:
$text = preg_replace( '/[^a-z0-9]+/i', ' ', strtolower( $data['text'] ) );
$breakout = explode( " ", $text );
$result = array_intersect( $this->_currentTracks, $breakout );我将推文切成文字,然后将它们与我当前的关键字进行匹配。这对于没有空格的所有关键字都很有效。
例如,如果我想查找"Den Haag",它不会出现,因为字符串被分解成单词(基于空格)。
关于如何快速完成这项工作,您有什么建议吗?
致以亲切的问候,蒂姆
发布于 2013-06-25 06:12:13
如果您要搜索的关键字很少,您可能会对基本的regexp方法感到满意:
if (preg_match('/\b(keyword1|keyword2|Den Haag)\b/i', $data['text'], $matches) !== FALSE) {
}然而,如果关键字的大集合可能有点不理想,特别是如果关键字往往以相同的前缀开头(在本例中为‘keyword’)。另一方面,它可能比一些更复杂的搜索算法的PHP实现更快。
您可以使用implode('|',$array)从关键字数组中准备正则表达式字符串,但是,如果您从外部源获取关键字(它没有在脚本中硬编码),则必须确保它正确转义(关键字可以包含像|这样的字符)。
https://stackoverflow.com/questions/17285837
复制相似问题