【发布时间】:2010-12-14 19:34:43
【问题描述】:
我有一个来自 csv 文件的大数据,如下所示。
url1, comment1
url2, comment2
我需要找到 cmets 之间的常用词,并根据每行常用词的出现情况对行进行相应的排序。
目前我能够获得常用词,但我不知道如何在不耗尽内存的情况下对每个常用词的行进行排序。
下面是我非常低效的代码。
$data = array();
while (($row = fgetcsv($fh, 1024, ',')) !== false) {
$data[] = $row[1];
}
$str = preg_replace('/\s\s+/', ' ', trim(str_replace(array('!', '?', '.', ','), ' ', implode('', $data))));
$words = explode(" ", $str);
var_dump(array_count_values($words));
【问题讨论】:
-
如果您要反复对 CSV 数据进行切片/切块,最好将其加载到数据库中,而不是在 PHP 中进行。一次性加载成本将被数据挖掘在数据库中后的容易程度所抵消。
-
谢谢,我试试这个方法