由于博客文章的增多,博文寻找起来多有不便,因此急需添加搜索功能。
要在 Hexo 博客中添加搜索功能,你可以使用一些 Hexo 插件或者集成第三方搜索服务。以下是两种常见的方法:
- Hexo 插件:
hexo-generator-search
插件GitHub地址:https://github.com/wzpan/hexo-generator-search/tree/master
集成第三方搜索服务
另一种方法是集成第三方搜索服务,如 Google Custom Search、Algolia、Elasticsearch 等。你可以将你的博客文章内容上传到这些搜索服务,并使用它们的搜索 API 在博客中添加搜索功能。这种方法通常需要一些额外的配置和开发工作,但可以提供更加强大和灵活的搜索功能。
用hexo-generator-search实现博文搜索
安装步骤:
安装插件:在Hexo根目录文件夹用Gitbash Here运行代码
1
npm install hexo-generator-search --save
注:
--save
可以不用,--save
参数在 npm 中已经不再建议使用,因为现在 npm 5.x 版本及以上已经默认将安装的包保存到了package.json
文件中的dependencies
或devDependencies
字段中,可以在该文件中查看安装版本获取或者自己写js的搜索代码,由于我不会写就用了【潘伟洲wzpan】大佬的代码文件, search.js 。下载放到Blog\themes\next\source\js,在主题文件夹下,每个人的路径不一定一样。
获取地址:https://github.com/wzpan/wzpan.github.io/blob/master/js/search.js
在导航栏添加search选项。
参考:《Hexo博客主题优化》
https://exbrain.com.cn/2024/01/20/Hexo%E5%8D%9A%E5%AE%A2%E4%B8%BB%E9%A2%98%E4%BC%98%E5%8C%96/
在search文件夹中的
index.md
中书写搜索代码添加搜索框
代码:
<div id=”site_search”>
<div class=”form-group”>
<input type=”text” id=”local-search-input” name=”q” \results=”0” placeholder=”Search” class=”st-search-input st-\default-search-input form-control”>
</div>引入**jQuery脚本 **,因为
search.js
依赖 jQuery,代码可以放在
index.md
中(单页面生效)或者主题文件夹下的
_layout.swig
或者_layout.ejs
。你可以在这些文件中找到<head>
部分,或者在页面底部,找到<body>
结束标签前的位置,然后将这行代码粘贴进去。(全局生效)在文章内引入search.js程序
程序加到搜索框上
搜索框样式CSS(可选)
搜索关键字底色高亮CSS(可选)
配置插件:在 Hexo 配置文件
_config.yml
中添加以下配置:```
search:
path: search.xml
field: post
content: true1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
> 注:
>
> - field
>
> \- the search scope you want to search, you can chose:
>
> - **post** (Default) - will only covers all the posts of your blog.
> - **page** - will only covers all the pages of your blog.
> - **all** - will covers all the posts and pages of your blog.
>
> - **content** - whether contains the whole content of each article. If `false`, the generated results only cover title and other meta info without mainbody. By default is `true`.
- 生成搜索索引:运行 `hexo generate` 命令来生成搜索索引。就会发现`public`根目录下多了`search.xml`文件。
- 之后常规Hexo clean 、Hexo g 、Hexo d就可以正常使用了。
---
# Next主题开启本地搜索功能(请直接看这个!!!)
> 因为我是用Next主题,原来这么简单,那我上1p在折腾个啥,fc!
### 步骤
- 安装插件`hexo-generator-searchdb`,命令行输入:npm install hexo-generator-searchdb –save
1
2
3
- 编辑`站点配置文件`,新增以下内容到任意位置,如下:search:
path: search.xml
field: post
format: html1
2
3
- 编辑`主题配置文件`,启用本地搜索功能,如下:Local search
local_search:
enable: true
参考:
https://liam.page/2017/09/21/local-search-engine-in-Hexo-site/
https://littleboy97.gitee.io/_A/Html/hexo%E7%AB%99%E5%86%85%E6%90%9C%E7%B4%A2.html
专业词汇
hexo-generator-search:
HaHack 参考 Christian Fei 的 Simple Jekyll Search 实现了名为
hexo-generator-search
的生成器。安装该生成器之后,在执行hexo generate
的过程中,会按照配置生成一个XML
或者JSON
文件,用于保存全站的文档数据。这个 XML 文件只是简单地做了数据的结构化存储,而完全没有考虑分词、倒排等问题。然后通过JS代码去匹配这个文件的内容,从而达到搜索的目的使用这个插件,你可以在你的 Hexo 博客中生成一个搜索索引,然后在博客中添加一个搜索框,让用户通过输入关键字来搜索博客文章。
倒排索引(Inverted Index)是一种常用于信息检索的数据结构。它将文档集合中的每个单词映射到包含该单词的文档列表,从而允许根据单词来快速检索相关的文档。
通常,倒排索引由两部分组成:词项(Terms)和倒排列表(Inverted Lists)。
- 词项(Terms):词项是文档集合中的单词或者词组。在倒排索引中,每个词项都会被映射到一个或多个文档。
- 倒排列表(Inverted Lists):倒排列表是词项到文档的映射。它记录了每个词项在哪些文档中出现过,以及每个文档中出现的位置信息。倒排列表通常包含文档 ID 和位置信息等内容。
倒排索引的优点在于它可以快速地进行全文搜索和相关性排序。当用户输入一个查询词时,系统可以直接查找倒排索引,找到包含该词的文档列表,并且根据相关性对文档进行排序,从而返回最相关的结果给用户。这种检索方式通常比简单的线性搜索效率更高。
倒排索引常用于搜索引擎和文档检索系统中,例如谷歌、百度等搜索引擎就使用了倒排索引来快速地索引和检索网页。
**jQuery **
是一个流行的 JavaScript 库,用于简化客户端(浏览器端)的 HTML 文档遍历、操作和事件处理,jQuery 提供了一组简洁而强大的 API,使得 JavaScript 开发者能够以更简单和更高效的方式处理各种客户端任务。
.json文件:
JavaScript 对象表示法(JSON)的文件扩展名。常用于配置文件、数据交换以及 Web 开发中的 API 通信等方面。用文本编辑器打开。