通过 javascript 对 CD-Rom 上的静态 HTML 文件进行全文搜索

Posted

技术标签:

【中文标题】通过 javascript 对 CD-Rom 上的静态 HTML 文件进行全文搜索【英文标题】:Full-text search for static HTML files on CD-Rom via javascript 【发布时间】:2010-11-24 08:06:30 【问题描述】:

我将在 CD-Rom 上提供一组静态 html 页面;这些页面需要在没有任何互联网访问的情况下完全可见。

我想为这些页面的内容提供全文搜索(类似 Lucene),它应该可以从 CD-Rom 中“正常工作”,而无需在客户端计算机上安装软件。

javascript 中实现搜索引擎将是完美的解决方案,但我很难找到任何看起来可靠/当前/流行的...?

我确实找到了这些: + jsFind + js-search

但这两个项目似乎都相当不活跃?

除了特定的 javascript 搜索引擎之外,另一种解决方案是能够从 javascript 访问本地 Lucene 索引:索引本身将使用 Lucene 构建并与 HTML 文件一起复制到 CD-Rom。

编辑:自己构建(见下文)。

【问题讨论】:

【参考方案1】:

最初的问题是在 09 年提出的

截至 14 年,lunr.js 被描述为:

在浏览器中进行简单的全文搜索

请参阅 Demo 和 Github repo。


更新 2016 年 9 月:轻量级模糊搜索,在 JavaScript http://fusejs.io/

【讨论】:

【参考方案2】:

Fullproof 是一个漂亮的小型 javascript 库,可以为您充当文本搜索。它在这种情况下很有用,但在“thick-javascript-webpage”模型中也很有用。

【讨论】:

【参考方案3】:

其实我自己做的。

现有的解决方案(我能找到)没有说服力。

我希望能够搜索显示为一页的很长的树(ul/li/ul...);它包含 5000 多个项目。

在一个页面上显示这么长的树听起来有点奇怪,但实际上折叠/展开它比单独的页面更直观,而且由于我们离线,下载时间不是问题(解析时间是,不过,Chrome 很棒 ;-)

现代浏览器(无论如何都是FF和Chrome)提供的“搜索”功能有两个大问题:它们只搜索页面上的可见项,并且无法搜索不连续的单词。

我希望能够搜索折叠的项目(在屏幕上不可见);我想在搜索“一三”时找到“一二三”(就像谷歌/Lucene);我只想打开包含找到的项目的树的分支。

所以,我所做的是:

    创建单词的倒排索引列表中项目的 ID(通过 xslt)(文档中大约 4500 个唯一单词) 将此索引转换为一堆 javascript 数组(一个单词 = 一个数组,包含 id) 搜索时,将搜索词表示的数组相交 第 3 步返回一个 ID 数组,然后我可以打开/突出显示该数组

它完全符合我的需要,而且速度非常快。更好的是,因为它从独立的“索引”(id 数组)中搜索,所以它甚至可以在浏览器中没有加载列表时进行搜索!

【讨论】:

我们可以看看这方面的任何例子吗? 你有这个公开的吗?【参考方案4】:

看看 CLucene -

http://sourceforge.net/projects/clucene

http://clucene.git.sourceforge.net/git/gitweb.cgi?p=clucene/clucene;a=summary

将 C++ 源代码编译到控制台或 Win32 可执行文件中,也可以使用 Lucene 技术(我假设您更愿意坚持使用)。

【讨论】:

【参考方案5】:

我知道很多人使用 Java 编写 CD 搜索小程序。我有一份略显陈旧的各种免费和商业程序列表,位于 Search Tools for CD-ROMs and DVDs。

【讨论】:

【参考方案6】:

Zoom Search Engine 可以做到这一点。

我没用过CD版,但是我的网站用的是php版,效果很好。

【讨论】:

我确实看过,谢谢,但适应我的特定需求似乎相当复杂。

以上是关于通过 javascript 对 CD-Rom 上的静态 HTML 文件进行全文搜索的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 访问 CD-ROM

QEMU,KVM及QEMU-KVM介绍

QEMU,KVM及QEMU-KVM介绍

QEMU,KVM及QEMU-KVM介绍

U盘安装Kali 出现cd-rom无法挂载 已解决

UWP 和 IMAPI 或寻址 CD-ROM 驱动器