快速搜索压缩文本文件

2024-05-13

我需要能够在大量压缩文件 (.txt) 中搜索文本。压缩可能会改变为其他东西,甚至成为专有的。 我想避免解压所有文件并压缩(编码)搜索字符串并在压缩文件中搜索。这应该可以通过对所有文件使用相同的码本使用霍夫曼压缩来实现。 我不想重新发明轮子,所以..任何人都知道一个库可以做这样的事情或实现和测试的霍夫曼算法,或者也许是一个更好的主意?

提前致谢


大多数文本文件都是用其中一种压缩的LZ家族 http://en.wikipedia.org/wiki/LZ77_and_LZ78的算法,它结合了字典编码器 http://en.wikipedia.org/wiki/Dictionary_coder与一个熵编码器 http://en.wikipedia.org/wiki/Minimum_redundancy_coding比如霍夫曼。

因为Dictionary Coder依赖于一个不断更新的“字典”,所以它的编码结果依赖于历史(字典中从输入数据到当前符号导出的所有代码),所以不可能跳转到某个位置并开始解码,而无需首先解码所有先前的数据。

在我看来,您可以只使用 zlib 流解码器,它会立即返回解压缩的数据,而无需等待整个文件被解压缩。这不会节省执行时间,但会节省内存。

第二个建议是对英语单词进行霍夫曼编码,并忘记字典编码器部分。每个英语单词都会映射到一个唯一的无前缀代码。

最后,@SHODAN 给出了最明智的建议,就是对文件建立索引,压缩索引并与压缩的文本文件捆绑在一起。要进行搜索,只需解压缩索引文件并查找单词。这实际上是对单词进行霍夫曼编码的改进 - 一旦找到单词的频率(为了最佳地分配前缀代码),您就已经构建了索引,因此您可以保留索引进行搜索。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速搜索压缩文本文件 的相关文章

随机推荐

  • for 循环初始值设定项中的结构

    知道为什么 for 循环初始值设定项中的这个结构表达式在编译时会出现语法错误吗 在这种情况下 指向结构的指针工作正常 但 ofc 我需要如下所示的局部变量 感谢您的建议 type Request struct id int line byt
  • 如何使用 RODBC 将数据帧保存到数据库生成的主键表

    我想使用 R 脚本将数据框输入到数据库中的现有表中 并且希望数据库中的表具有顺序主键 我的问题是 RODBC 似乎不允许主键约束 这是创建我想要的表的 SQL CREATE TABLE dbo results ID INT IDENTITY
  • 从 DataGridViewCell 获取数值?

    我正在尝试从 a 中检索数值DataGridView 到目前为止 我发现的唯一方法是将它们作为字符串检索并将它们转换为数字 Convert ToDouble MyGrid SelectedRows 0 Cells 0 Value ToStr
  • C 套接字客户端/服务器滞后

    我正在编写一个 C C 客户端 服务器套接字应用程序 此时 客户端每 50 毫秒连接一次服务器并发送一条消息 一切似乎都正常 但数据流并不连续 突然 服务器不再收到任何消息 然后一次收到 5 条消息 有时一切正常 有人知道这种奇怪行为的起源
  • 按日期对图表中的 X 轴进行排序 - JavaFX

    如何按日期对折线图 X 轴进行排序 现在我的折线图看起来像这样 我试图剪切日期并将其转换为 int 但现在我不知道该怎么办 datesToCompare addAll LastHoursAndDates keySet dates in St
  • C++ 的 String.Format

    正在寻找 NET 的 String Format 等函数的 C 实现 显然有 printf 及其变体 但我正在寻找具有位置的东西 如下所示 String Format 您好 0 您是 1 岁 感觉如何 1 姓名 年龄 这是必要的 因为我们将
  • 如何提取句子中的主语及其各自的从属短语?

    我正在尝试在句子中进行主题提取 以便我能够根据主题获得情感 我在用nltk在 python2 7 中用于此目的 以下面的句子为例 Donald Trump is the worst president of USA but Hillary
  • 使用 MSBuild 12 构建 MVC 4.0 项目时“任务失败,因为未找到 AXImp.exe”

    我正在尝试使用 CruiseControl Net 和 MSBuild 设置构建服务器 但是 它失败并出现错误 C Builds PremiumStore checkout PremiumStore sln default target 1
  • 为什么正则表达式中有四个反斜杠?

    d 1 2 我有上面的正则表达式 我知道字符串解析器会删除两个反斜杠 留下我们 d 以1为元字符 无关的功能是什么 我以前没有正则表达式的经验 或者字符串模式本身就是 反斜杠 最多出现两次的整数 我错过了什么吗 反斜杠转义其他反斜杠以及特殊
  • ASP.NET - 在 GridView 中显示图像和 pdf

    我想在 asp GridView 中显示 图像 列 这个想法是提供图像的缩略图以及实际尺寸图像的链接 对于某些行 这也可以是 PDF 文档 我想要 PDF 的链接 PDF 或图像存储在 SQL 数据库中 现在我在处理程序 ashx 文件中出
  • 强制向扬声器发出音频警报

    我有一个小应用程序 在此应用程序中 扬声器每隔我设置的特定时间就会发出噪音 现在 我希望即使设备中插入了耳机插孔 它也能通过内置扬声器发出噪音 我怎样才能做到这一点 您可以尝试以下代码在扬声器上播放代码 另请检查this http uiha
  • Kendo Ui MVC EditorTemplateName 在 PopUp 编辑模式下不起作用

    我想在 Kendo Ui 网格中使用 EditorTemplateName 作为外键列 当网格编辑模式为内联时 一切正常并且我的模板已加载 但是当将模式更改为弹出时不加载模板 如何修复它 Html Kendo Grid
  • PHP ::: 准备语句 ::: freeresult() ::: close()

    使用的重要性是什么 stmt gt free result stmt gt close 使用准备好的语句进行数据库调用后 如下所示 mysqli new mysqli database db pass user stmt mysqli gt
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string?

    MISRA C 规则 18 4 1 说 不得使用动态堆内存分配 See http dist sonarsource com reports coverage misra c 2008 html http dist sonarsource c
  • 在 TensorFlow 中,tf.identity 有何用途?

    我见过tf identity在一些地方使用过 例如官方 CIFAR 10 教程和 stackoverflow 上的批量规范化实现 但我不明白为什么有必要 它是用来做什么的 谁能给出一两个用例吗 一种建议的答案是它可以用于 CPU 和 GPU
  • 使用操作系统用户名/密码在 PHP 中进行身份验证?

    我想知道是否有一种方法可以使用 PHP 或者可能是其他一些 CGI 但最好是 PHP 来使用其操作系统 在本例中为 Linux Debian 5 用户名和密码来验证用户 可能的 难的 谢谢 一般来说 这种东西是特定于操作系统的 并与现有的身
  • 如何仅在单击子级时触发父级单击事件

    子级和父级都是可点击的 子级可以是带有 jQ uery 单击事件的链接或 div 当我点击子事件时 如何只触发父事件而不触发子事件 DOM 事件阶段 活动分为三个阶段 Capture 第一阶段是 捕获 其中从事件处理程序开始调用
  • Jquery 动画背景图像过渡

    我有一个导航栏 当将鼠标悬停在某个项目上时 背景图像会发生变化 效果很好 但是 我希望该图像从顶部滑入 并在您停止悬停时向上滑回 我一直在尝试使用 JQuery 使用 css bacgroundImage 和滑动或切换来做到这一点 但这些似
  • 快速搜索压缩文本文件

    我需要能够在大量压缩文件 txt 中搜索文本 压缩可能会改变为其他东西 甚至成为专有的 我想避免解压所有文件并压缩 编码 搜索字符串并在压缩文件中搜索 这应该可以通过对所有文件使用相同的码本使用霍夫曼压缩来实现 我不想重新发明轮子 所以 任