通过 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 文件进行全文搜索的主要内容,如果未能解决你的问题,请参考以下文章