2011-06-11 67 views
0

我有一个类使用自然语言处理的正则表达式和处理大量的数据,它喂养的时间看起来并不乐观。需要指导扩大在php

我正在寻求扩大规模,并行做事的手段,我还没有任何经验。

我希望有人能够解释我在搞什么,利弊如何在php中做到这一点。此外,如果你可以提供一般的缩放比例或者更好的缩放比例。谢谢。

编辑:

foreach ($sentences as $sentence) { 
    // for each sentence check if a keyword or any of its synonyms 
    // appear together with any sentiment applicable to the keyword 
    foreach ($this->keywords as $keyword => $synonyms) {    
    foreach ($this->sentiments[$keyword] as $sentiment => $weight) { 
     $match = $this->check($sentence, $synonyms, $sentiment); 
    } 
    } 
} 

// regex part of the code 
$keywords = implode('|', $keywords); 
$pattern = "/(\b$sentiment\b(.*|\s)\b($keywords)\b|\b($keywords)\b(.*|\s)\b$sentiment\b)/i"; 

preg_match_all($pattern, $sentence, $matches); 
+0

如果你发布了一些代码,你将会有更多的运气。无论如何,对你的代码运行一个分析器来查看哪些部分花费的时间最长是个好主意。 – 2011-06-11 04:48:52

回答

0

PHP可能不适合这种类型的应用的一个很好的选择。它是一种相当高级的语言,可能会降低任何重要的处理速度。

现在,如果你想坚持PHP,你可以用某种工作管理应用程序来完成。可能已经有一些应用程序可以像齿轮人员一样使用,甚至可以使用hadoop。将数据分解成块并将其提供给应用程序。借助这些工具,您可以将处理扩展到一台或多台服务器。

如果您使用亚马逊网络服务,您可能需要查看Elastic Map Reduce并查看它是否符合您的需求。

+0

目前阅读Hadoop和Elastic Map Reduce。假设我可以选择不坚持PHP,那么这将是一个很好的选择? – ianpanara 2011-06-11 05:51:43

+0

Java,Perl或C可能是。 – 2011-06-11 06:00:13

0

Apache Hadoop Map Reduce作业非常适合这类工作。从一开始就多花点功夫,但我认为你会发现它是一个很好的解决方案。借助Hadoop,您可以轻松地在1个节点或30个节点上运行计算。