通过javascript在CD-Rom上全文搜索静态HTML文件

Bam*_*bax 15 javascript lucene search full-text-search

我将在CD-Rom上提供一组静态HTML页面; 这些页面需要完全可见,无需任何Internet访问.

我想为这些页面的内容提供全文搜索(类似于Lucene),这些页面应该在CD-Rom中"正常工作"而客户端计算机上没有安装软件.

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

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

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

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

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

Bam*_*bax 11

事实上,我自己建造了它.

现有的解决方案(我能找到)并不令人信服.

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

在一个页面上显示如此长的树听起来有点奇怪,但实际上崩溃/扩展它比单独的页面更直观,而且由于我们处于脱机状态,下载时间不是问题(但解析时间虽然如此,但是Chrome是惊人的;-)

现代浏览器(无论如何都是FF和Chrome)提供的"搜索"功能有两大问题:它们只搜索页面上的可见项目,而不能搜索非连续的单词.

我希望能够搜索折叠的项目(在屏幕上看不到); 我想在搜索"一三"时找到"一二三"(就像Google/Lucene一样); 我想打开包含找到的项目的树的分支.

所以,我做的是:

  1. 从列表中创建单词< - > id的倒排索引(通过xslt)(文档中大约4500个唯一单词)
  2. 将此索引转换为一堆javascript数组(一个单词=一个数组,包含ids)
  3. 搜索时,与搜索词所代表的数组相交
  4. 步骤3返回一组id,然后我可以打开/突出显示

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


Mar*_*son 6

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

从14年开始,lunr.js被描述为:

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

参见演示Github回购.


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