Skip to content

小型静态站(包含中文内容)全文搜索方案研究 #1

@ben7th

Description

@ben7th

方案一:

lunr.js / jekyll-lunr-js-search
https://github.com/slashdotdash/jekyll-lunr-js-search

此方案通过 jekyll 插件,自动给所有文档生成索引文件,保存成一个 json 放置在工程目录下。前端每次执行搜索动作时,都访问这个 json,然后使用 lunr.js 执行搜索动作。

虽然 lunr.js 不支持中文(其实是所有非英语的 UTF-8 字符),但是可以通过简单修改来支持。
但是,这种方案缺点很大,主要有以下几点:

  1. 针对中文生成的索引文件太大,当文章较多时,能达到 4-5 MB 的大小。
    事实上 github help 的搜索索引文件就有 5 MB 之大。(看 chrome 的请求可知)
    当带宽不高,或者使用移动网络访问时,性能会很低下。
  2. jekyll-lunr-js-search 的索引策略并不科学。它只是弄了一个很呆板的索引 jekyll 的常用主要信息字段的索引方式。而很多小型静态站并没有必要这样索引。

方案二:

使用 elastic-search 生成索引,并把索引部署到某个网址作为服务来使用。
这种方式的可行性是有的,工作性能也是很好的。

唯一缺点在于部署和发布起来很繁琐,架构复杂。做起来比较费时间。
我们做小型静态站本身就是为了省时间。用这种方案会本末倒置。


方案三:

自己按需编写简单的小型索引方案。
目前正按此尝试。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions