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

hmtdttj4  于 2022-11-07  发布在  Lucene
关注(0)|答案(7)|浏览(247)

我将在CD-Rom上提供一组静态HTML页面;这些页面需要在没有任何Internet访问的情况下可以完全查看。
我想为这些页面的内容提供一个全文搜索(类似Lucene),这应该“只是工作”从CD-Rom没有软件安装在客户机上。
用javascript实现搜索引擎将是完美的解决方案,但我很难找到任何看起来坚实/当前/流行的...?
我确实找到了这些:+ jsFind + js-search
但这两个项目似乎都不太活跃
另一个解决方案,除了一个特定的搜索引擎在javascript,将是能够访问本地Lucene索引从javascript:索引本身将使用Lucene构建并与HTML文件沿着复制到CD-Rom中。

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

bprjcwpo

bprjcwpo1#

Zoom Search Engine可以做到这一点。
我还没有使用CD版本,但我用PHP版本为我的网站,它的工作非常好。

q35jwt9p

q35jwt9p2#

我知道很多人使用Java来编写CD搜索小程序。我在Search Tools for CD-ROMs and DVDs有一个稍微老一点的各种免费和商业程序的列表。

yqhsw0fo

yqhsw0fo3#

看看克鲁辛-
http://sourceforge.net/projects/clucene
http://clucene.git.sourceforge.net/git/gitweb.cgi?p=clucene/clucene;a=summary
将C++源代码编译成控制台或Win32可执行文件,也可以使用Lucene技术(我认为您更愿意坚持使用它)实现上述功能。

6ss1mwsb

6ss1mwsb4#

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

vlf7wbxs

vlf7wbxs5#

通过用mkdocs配置一个YAML文件,你可以生成一个静态的客户端搜索,假设你把所有的源文件都保存为有效的markdown。与mkdocs material theme结合,你还可以通过在mkdocs配置文件中设置你需要的选项来获得一个现代的材料UI。
具有静态客户端js搜索的mkdocs.yml示例:

  1. site_name: My Site
  2. site_url: http://example.com/site
  3. site_dir: ~/local/files/dir
  4. use_directory_urls: false
  5. theme:
  6. name: material
  7. highlightjs: false
  8. custom_dir: overrides
  9. extra:
  10. generator: false
  11. features:
  12. - navigation.instant
  13. - navigation.tracking
  14. - navigation.expand
  15. - toc.follow
  16. - toc.integrate
  17. - search.highlight
  18. - header.autohide
  19. # see also: https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#anchor-tracking
  20. markdown_extensions:
  21. - toc:
  22. permalink: True
  23. - sane_lists
  24. nav:
  25. - Top-level Category:
  26. - "Self-Defence Against Fresh Fruit": fruit.md
  27. - "Piranha Brothers": piranha.md
  28. ...

正在安装mkdocsmkdocs-material

  1. pip install mkdocs
  2. pip install mkdocs-material

您可以在https://www.mkdocs.org/https://squidfunk.github.io/mkdocs-material/上看到js搜索的运行情况

展开查看全部
z4bn682m

z4bn682m6#

其实是我自己造的。
现有的解决方案(我能找到的)没有说服力。
我希望能够搜索显示为一页的非常长的树(ul/li/ul...);它包含5000多个项目。
在一个页面上显示这么长的树听起来有点奇怪,但事实上,折叠/展开比单独的页面更直观,而且因为我们是离线的,下载时间不是问题(解析时间是,虽然,但Chrome是惊人的;- )
现代浏览器(FF和Chrome)提供的“搜索”功能有两个大问题:它们只能搜索页面上的可见项,不能搜索不连续的单词。
我希望能够搜索折叠的项目(在屏幕上不可见);我想在搜索“一个三”时找到“一个二个三”(就像用Google / Lucene);并且我只想打开包含找到的项目的树的分支。
所以,我所做的是:
1.从<->列表中创建项目的单词id的倒排索引(通过xslt)(文档中大约4500个唯一单词)
1.将此索引转换为一组javascript数组(一个单词=一个数组,包含id)
1.在搜索时,对搜索词所代表的数组求交集
1.第3步返回一个id数组,我可以打开/突出显示它
它做的正是我所需要的,而且它真的很快。更好的是,因为它从一个独立的“索引”(id数组)搜索,它可以搜索时,列表甚至没有加载到浏览器!

idv4meu8

idv4meu87#

最初的问题是在09年提出的
自'14起,lunr.js被描述为:
在浏览器中进行简单的全文搜索
请参见DemoGithub repo

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

相关问题