用于在JavaScript中存储文本文件(具有25%重复单词)的算法

我有文本文件格式的原始数据,有很多重复的令牌(~25%).我想知道是否有任何算法可以帮助:

(A)以紧凑的形式存储数据

(B)然而,允许在运行时重新构成原始文件.

有任何想法吗?

更多细节:

>原始数据在纯html javascript应用程序中使用,用于使用正则表达式进行即时搜索.
>数据由包含(区分大小写)字母字符的标记组成,加上几个标点符号.
>令牌由空格,新线分隔.

迄今为止最有希望的算法:下面讨论的简洁数据结构,但重构看起来很困难.

http://stevehanov.ca/blog/index.php?id=120

http://ejohn.org/blog/dictionary-lookups-in-javascript/

http://ejohn.org/blog/revised-javascript-dictionary-search/

PS:服务器端gzip现在正在使用,但它只是一个传输层优化,并没有帮助最大限度地利用离线存储.鉴于重复性高达25%,应该可以以更紧凑的方式存储,不是吗?

最佳答案 鉴于实际使用还不清楚,我不知道这是否有用,但对于最小的总大小(html javascript数据),有些人提出了将文本数据存储在灰度.png文件中的想法,一个字节到每个像素.然后,一个小的加载器脚本可以将.png绘制到画布上,将其作为像素读取像素并以这种方式重新组合原始数据.这使您可以放弃压缩而无需在Javascript中实现它.参见例如
here更多详细信息.

请不要使用这样的技术,除非你有非常好的要求,例如对于规模受限的编程竞赛.你的同事会感谢你:-)

点赞