【发布时间】:2012-05-14 15:49:03
【问题描述】:
我有文本文件格式的原始数据,其中包含大量重复标记 (~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% 的大量重复性,应该可以以更紧凑的方式存储,不是吗?
【问题讨论】:
-
使用服务器端 gzip 压缩怎么样?
-
您可以使用deflate/inflate,它应该非常适合此类任务。
-
如何消费数据?是否会使用 AJAX 请求从服务器加载?
-
我不太确定你想要激活什么,但一些 JavaScript 混淆是为了压缩数据。如果你有冒险的心情,你可以尝试在 JavaScript 中实现 LZ 压缩算法。
-
确认!很抱歉没有提供实际使用的细节。这是为了允许使用正则表达式进行实时搜索。 gzip 已启用,并且有很大帮助。我已经玩过 jsunzip,将数据从 .png 编码/解码到画布。虽然有一种算法完全适合这个(紧凑表示+动态重构)要求,但我有一种烦人的感觉。
标签: javascript algorithm