我必须认识到一大群网址(几百万行)属于一个特定的类别或不。我有另一个具有子字符串的列表,如果该URL存在属于该类别的话。例如,类别A.寻找更快速的方式来执行字符串搜索
要检查的子字符串列表大约有10k个这样的子字符串。我所做的只是在子字符串文件中一行一行地查找匹配项,并且如果找到该URL属于类别A的话。我在测试中发现这很耗时。
我不是计算机科学专业的学生,所以没有太多有关优化算法的知识。但是有没有办法让这个更快?只是简单的想法。编程语言不是一个大问题,但Java或Perl会更好。
要匹配的子字符串列表不会有太大变化。然而,我会收到不同的URL列表,所以每次得到它时都要运行它。瓶颈似乎是网址,因为它们可能会变得很长。
你可以使用一些信息检索系统(即Lucene的 - 在Java中)索引的URL,然后搜索字符串,索引会费时,但可以为每个“查询”节省时间 - 无需遍历整个列表。 – amit 2011-04-13 07:41:24
10K次,比如说1000万是什么,1000亿?是的,不管语言如何,这都需要一些时间。如果A类中有某物,这是否意味着它们不能在其他类别中?如果是这样,你可以从大列表中删除所有分配给 – 2011-04-13 07:44:40
的大列表。子列表的列表是恒定的,没有理由需要很长时间,查看我的答案列表的长度只影响所用的大小内存的自动机,甚至可能会很小 – Asaf 2011-04-13 07:46:31