将大字符串与几百个小短语相匹配

时间:2011-05-26 19:55:44

标签: java string contains

我有数以千计的大字符串需要与另外一组数百个较小的短语和单词进行比较/匹配,以查看这些短语是否包含在大字符串中。

这样做最快的方法是什么?我只是使用String.indexOf(...),或String.matches(regularExpression),还是下到字节级等等。

(所有匹配必须不区分大小写;“HI”和“hi”短语都必须在字符串“Hi there”中找到。)

任何提示?

编辑:“最快”,我的意思是表现。

3 个答案:

答案 0 :(得分:2)

Trie/Prefix TreeRadix Tree很可能是您正在寻找的。

答案 1 :(得分:1)

我可能会考虑使用aho-corasick或前缀树来执行此类任务。
这篇文章已经在Java: Matching Phrases in a String

中提到了这个问题

答案 2 :(得分:0)

  

最快捷的做法是什么   这个?我只是用一个   String.indexOf(...),或   String.matches(regularExpression),或   进入字节级别等   等

如果你想要表现,绝对不是正则表达式。也不是字节级:Java使用unicode,字节处理可能非常尴尬。 String.indexOf()似乎合理

  

(所有比赛必须不区分大小写;   必须是“HI”和“hi”短语   在字符串“Hi there”中找到。)

我通过小写文本和搜索字符串来实现它。 (一旦有了偏移量,就可以从原始字符串中获取原始匹配文本)