加载中...

加载中...

搜索配置

本页是搜索功能的配置参考:三套搜索引擎(本地 / Algolia / Pagefind)各自的配置项、默认引擎的选取与切换,以及多语言结果过滤与统一高亮。使用步骤(打开弹窗、快捷键)见布局与搜索

配置权威源为 userConfig/_config.tmp.ymlsearch 段,构建时注入主题配置。

1. 三引擎概览

引擎配置键索引位置
本地search.local/search.json(主题生成器生成)
Algoliasearch.algolia远端索引(构建时推送)
Pagefindsearch.pagefindpublic/pagefind/(构建后扫描生成)

2. 默认引擎与切换

  • search.default:取值 local / algolia / pagefind,指定默认引擎。
  • 生效顺序:localStorage['search_engine'] 记忆 → search.default → Algolia → 第一个已启用引擎。
  • 若默认引擎 enable: false,自动降级到第一个已启用引擎并打警告日志。
  • 切换入口:搜索弹窗内的引擎下拉(#searchEngineMenu,项 data-engine=local|algolia|pagefind);切换会 destroy 旧引擎并 init 新引擎,选择写入 localStorage

3. 本地搜索 search.local

说明
enable总开关
path索引输出路径,默认 /search.json
field搜索范围:post / page / wiki / all,或数组组合
content是否索引正文(false 仅标题)
formatstriptags(去 HTML 标签)或 raw
triggerauto(输入即搜)或 manual(回车/按钮)
top_n_per_article每篇最多命中片段数,-1 为全部
unescape / preload预留项,当前实现未接入

4. Algolia search.algolia

  • enable / applicationID / apiKey / indexName:开关与凭据(前端搜索凭据可安全暴露)。
  • content_length:正文纯文本截断字符数;excerpt_length:摘要截断字符数。
  • batch_size:推送批大小;hits.per_page:每页结果数。
  • labels.*input_placeholder / hits_empty / hits_stats
  • 写入凭据与前端分离:构建推送用 deploy.algolia_write_key,不注入前端。

5. Pagefind search.pagefind

  • enable:总开关。
  • output_subdir:索引子目录(相对 public/),默认 pagefind
  • 构建步骤:hexo generate 之后、部署之前执行 npx pagefind --site public --output-subdir pagefind
  • 加密文章通过 data-pagefind-body 条件渲染自动排除。

6. 多语言与高亮

  • 结果过滤:search.jsapplyLangFiltergroupAndFilter,按路径语言前缀分组。
  • 语言偏好:读取 localStorage['wiki_lang'],非法值回落到默认语言。
  • 展示优先级:偏好语言 → 默认语言 → 首条。
  • 高亮:三引擎共用 SearchEngine._highlight,命中词加 <mark> 并做 HTML 转义(XSS 防护)。
评论
数据加载中 ...