我有成千上万的大字符串,我需要与另一组数百个较小的短语和单词进行比较/匹配,以查看这些短语是否包含在大字符串中。匹配大字符串对几百个小短语
什么是这样做的最快的方法?我只是使用String.indexOf(...)或String.matches(regularExpression),或者我可以下降到字节级别等等
(所有匹配必须是不区分大小写的;“HI”和“hi”短语必须在字符串“Hi there”中找到。)
任何提示?
编辑:由“最快”,我的意思是在性能方面。
我有成千上万的大字符串,我需要与另一组数百个较小的短语和单词进行比较/匹配,以查看这些短语是否包含在大字符串中。匹配大字符串对几百个小短语
什么是这样做的最快的方法?我只是使用String.indexOf(...)或String.matches(regularExpression),或者我可以下降到字节级别等等
(所有匹配必须是不区分大小写的;“HI”和“hi”短语必须在字符串“Hi there”中找到。)
任何提示?
编辑:由“最快”,我的意思是在性能方面。
我可能会考虑使用aho-corasick或前缀树来完成这样的任务。
这个问题已经被问在这个岗位Java: Matching Phrases in a String
一个Trie/Prefix Tree或Radix Tree是最有可能你在找什么。
做什么最快的方法 这个?难道我只是用一种 String.indexOf(...),或 String.matches(正则表达式),或 我下到字节级等 等,如果你想
Definitly不是正则表达式性能。也不字节级:java使用unicode的,字节处理可能会很尴尬。 String.indexOf()似乎是合理的
(所有比赛必须是不区分大小写; 都 “HI” 和 “喜” 的短语必须在字符串中发现 “你好”)
我想实现利用lowercasing文本和搜索字符串。 (一旦你的偏移量,你可以从原来的字符串匹配原始文本)