我必须在数据块中搜索大约 100 个单词(大约 20000 个块),每个块包含大约 20 个单词。块应按匹配数的递减顺序返回。蛮力技术非常繁琐,因为你必须一个一个地搜索所有 100 个单词,然后以复杂的方式组合相关搜索的数量。是否有任何其他算法允许同时搜索多个单词并存储匹配单词的数量?
谢谢
您可以使用Aho-Corasick算法一次搜索所有 100 个单词。在 SO和github上有几个实现。
为什么不考虑使用多线程来存储结果?制作一个大小等于块数的数组,然后每个线程将结果计入一个块中,然后线程将结果写入数组中的相应条目。稍后您按降序对数组进行排序,然后得到结果。