我有一小段文本(更具体地说是一条推文,因此最大长度为 140 个字符),我想对大约 100,000 个字词进行搜索。
它正在颠覆经典的搜索问题(大文档,小搜索词)。遍历每个搜索时间并尝试映射的幼稚方法不是解决此问题的最有效方法。
有没有人有任何关于如何解决这类搜索问题的资源或见解?
我有一小段文本(更具体地说是一条推文,因此最大长度为 140 个字符),我想对大约 100,000 个字词进行搜索。
它正在颠覆经典的搜索问题(大文档,小搜索词)。遍历每个搜索时间并尝试映射的幼稚方法不是解决此问题的最有效方法。
有没有人有任何关于如何解决这类搜索问题的资源或见解?
偶然发现 Aho-Corasick 算法在这种情况下效果很好。
http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm
使用 Javascript 实现,我可以获得以下性能:
匹配的单词:简略英语词典(约 250,000 个单词)
每秒执行的句子数:~80,000
如果这对您的使用很重要,则需要一些额外的过滤来检查单词边界。该算法在文本中吐出匹配位置,因此有效地检查单词边界是微不足道的。
希望这可以帮助寻找类似问题的人:)