javascript - 如何使用 JavaScript 查找 10 GB 或更大文件中的所有唯一单词并启用搜索?

标签 javascript full-text-search big-o scalability bigdata

问题是实现一个可以读取 10GB 文件并存储所有不同单词及其出现次数的 Web 服务。需求需要以 O(n) 或更好的复杂度来解决。问题的下一部分是编写所有客户端代码以允许基于按键进行搜索。 我该如何解决这个问题?您有什么建议,主要的副标题是什么?我们需要使用某种内存缓存吗?一台计算机可以搜索 10GB 的数据吗?我是否应该考虑基于语言的不同单词的近似值(例如,在《破解编码面试》中,我读到一种语言中有大约 600,000 个不同的单词)。如何处理以这种方式构建的系统的可扩展性?我真的需要帮助来构建我的想法!预先感谢!

最佳答案

您不应该为此使用 JavaScript。几乎任何语言都会有更好的性能。

但是,先把这个放在一边,让我们回答这个问题。您需要做的是创建一个 Set 并迭代所有单词。考虑到数据的大小,您可能希望事先或在读取时将其分割成 block 。

每次只需将键添加到 Set 中就足够了,因为 Set 仅包含唯一元素。

或者,如果您有 10+GB 的 RAM,只需将整个内容放入一个数组中并将其转换为一个集合即可。然后您将能够读取唯一值。不过,这需要相当长的时间。

关于javascript - 如何使用 JavaScript 查找 10 GB 或更大文件中的所有唯一单词并启用搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271760/

相关文章:

javascript - 无需替换的动态 <a href> 事件

javascript - 创建广告小部件

php - Mysql全文检索不起作用

mysql - MySQL 的 FULLTEXT 搜索是否为 MyISAM 和 InnoDb 返回相同的结果?

javascript - 更改日期时间选择器语言不起作用

javascript - 绑定(bind)到特定的 CSS 转换

java - Lucene 通过 URL 搜索

algorithm - 如何分析这个算法的效率

algorithm - 按排序顺序列出 B 树中的键所需的时间?

performance - 算法 : how do divide-and-conquer and time complexity O(nlogn) relate?