我有成千上萬的大字符串,我需要與另一組數百個較小的短語和單詞進行比較/匹配,以查看這些短語是否包含在大字符串中。匹配大字符串對幾百個小短語
什麼是這樣做的最快的方法?我只是使用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文本和搜索字符串。 (一旦你的偏移量,你可以從原來的字符串匹配原始文本)