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