首页 > 其他分享 >给你的博客加上搜索功能!

给你的博客加上搜索功能!

时间:2024-07-08 10:24:18浏览次数:14  
标签:加上 博客 搜索 VuePress algolia 数据 Algolia

15.搜索功能

搜索功能是非常重要的,但 VuePress 内置的搜索功能,只是基于 headers 的搜索 —— 它会自动为所有页面的标题、h2​ 和 h3​ 构建起一个简单的搜索索引,也就是我们能搜索的东西只有标题,如果标题里没有你输入的关键字,就搜不到。

也就是说,不能搜索 Markdown 文件里的内容,非常不方便。

第三方插件

有 2 个插件:

使用方法:先安装依赖

npm i vuepress-plugin-flexsearch-pro

在 config.js 里配置:

module.exports = {
    plugins: [
      ['flexsearch-pro'],
      // other plugins
    ]
}

更丰富的配置项:

// .vuepress/config.js

module.exports = {
    plugins: [
      ['flexsearch-pro', {
        /*
          自定义搜索参数
        */
        searchPaths: ['path1', 'path2'],    // 搜索路径数组,为空表示搜索全部路径
        searchHotkeys: ['s'],    // 激活搜索控件的热键, 默认是 "s" ,也可以添加更多热键
        searchResultLength: 60,    // 搜索结果展示的字符长度, 默认是60个字节
      }],
      // other plugins
    ]
}

使用第三方插件的缺点是,会让静态文件包变的很大,使得首页的加载速度变慢,而首页加载速度慢很可能导致客户的流失。因此本文着重介绍第三方搜索。

第三方搜索,简单来说就是第三方通过爬虫的方式爬取网站里的内容,然后做好相应的分词等功能,并提供第三方接口用于查询

Aligo 搜索

在第三方搜索中,目前大多数文章介绍的、使用最广的都是针对 algolia 的对接,例如 VuePress 官方网站 使用的也是 Algolia,使用效果如下:

ElementUI 也是用的 Algolia:组件 | Element

并且 VuePress 内置了对 Algolia 的支持:默认主题配置 - Algolia 搜索 | VuePress

对接 Algolia 很简单,看到很多文章最后都正常使用了,但博主本人一直无法正常使用 Algolia,进行了很多的配置,但是搜索框就是没有正常显示,为此我还提了一个 issue:关于 VuePress 集成 Algolia 不生效的咨询 · Issue #3107,但没什么人回复,就此作罢。这里仅仅简单介绍下如何配置。

对接流程简单来说分为两步:

  1. 创建 Algolia 索引
  2. 在 VuePress 中配置 Algolia DocSearch

首先,打开 DocSearch: Search made for documentation | DocSearch by Algolia,填写一些相关信息:

提交后会告诉你正在处理中,有结果后会发邮件反馈:

反馈时间看情况,有的人三天,我等了 7 天,邮件内容大致如下:

简单来说就是请在 3 天内回复你是否网站的拥有者。

此时需要回复邮件,告诉自己就是网站的维护者,并且可以修改代码,例如:

Thanks!

I am the maintainer of the website, I can modify the code ~

然后过几天就会收到回复,例如 APPID 等,这些参数是我们需要在 VuePress 中配置的:

如果你用的是 VuePress 的默认主题,VuePress 直接提供了 themeConfig.algolia 选项来用 Algolia 搜索替换内置的搜索框:

// .vuepress/config.js

module.exports = {
  themeConfig: {
    algolia: {
      apiKey: '<API_KEY>',
      indexName: '<INDEX_NAME>'
      // 如果 Algolia 没有为你提供 `appId` ,使用 `BH4D9OD16A` 或者移除该配置项
      appId: '<APP_ID>',
    }
  }
}

然后按理说就可以用了,简单吧...

以上是 VuePress 默认主题的配置,如果使用了其他主题,则需看该主题是否有做什么修改。

主要参考:VuePress 博客优化之开启 Algolia 全文搜索_冴羽的 JavaScript 博客

关于 Algolia 的更多说明

如果你搜任何数据,都显示搜索不到数据,那很可能是爬取的数据有问题,我们注册并登录 https://www.algolia.com/ 打开管理后台,点击左侧选项栏里的 Search,查看对应的 indexName 数据,如果 Browse 这里没有显示数据,那说明爬取的数据可能有问题,导致没有生成对应的 Records:

登录后点击 search:

然后点击 Index:

​​

如果没有数据,那我们就查下爬取的逻辑,打开爬虫后台,点击对应 indexName 进入后台:

如果显示成功爬取,也有 Monitoring Success 的数据:

如果没有记录,那大概是爬虫提取数据的逻辑有问题。登录爬虫控制台:Crawler Admin Console,然后点击左侧选项栏中的 Editor,查看具体的爬虫逻辑:

像 pathsToMatch 这里如果是 https://www.peterjxl.com/docs/**​,但我们的的网址 https://www.peterjxl.com/** ​都是开头的,没有 docs 文件夹,所以提取错误

我们修改一下 pathsToMatch,然后在右侧的输入框里输入我们的网址,点击右侧的数据进行测试:

​​

如果能像这样提取到数据,就说明没有什么问题了,点击右上角的 Save。特别注意:爬取数据的时候,是用境外的服务器爬取的。如果你的网站设置了境外不能访问,那么爬取会失败,这一步是爬取不出来数据的。

切换回 Overview,点击右上角的 Restart crawling,我们重新爬取一下数据:

如果 Records 这里有数据,那搜索的时候基本也会有数据了。

注意:爬虫是每周执行一次,并且每周会有爬取结果和本周使用的搜索次数的统计邮件:

美丽云搜索

algolia 非常优秀,提供了免费的额度供普通博客进行接入,当博客内容足够多之后,免费额度不够用,就得付费购买服务,且 algolia 是闭源的,没有自建搜索的可能。

后来我在二丫讲梵的博客上看到了美丽云搜索(meilisearch),也是一个搜索引擎,主程序完全开源,除了使用官方提供的美丽云服务进行对接之外,还可以通过自建搜索引擎来实现完全独立的搜索服务,下一篇就会讲讲怎么搭建。

小结

使用第三方插件的缺点是,会让静态文件包变得很大,使得首页的加载速度变慢,而首页加载速度慢很可能导致用户的流失。推荐使用第三方搜索功能。

参考

标签:加上,博客,搜索,VuePress,algolia,数据,Algolia
From: https://www.cnblogs.com/PeterJXL/p/18289384

相关文章

  • 【DFS】深度优先搜索 洛谷选数例题讲解
    DFS深搜选数问题看一看题......
  • 基于Python实现的博客内容推荐系统
    前言大家好!今天来给大家分享一个基于Python实现的博客内容推荐系统。这个项目源自于一个想法:如何为博客用户提供他们最感兴趣的内容。正如大家所知道的,内容推荐系统在电商、视频平台和社交媒体中应用广泛,能显著提升用户体验和平台粘性。那么,如何为我们的博客(比如你自己的W......
  • 博客搭建-图床篇
    我们的博客难免少不了图片,图片管理是一个不小的难题。如果我们将图片全部放到我们自己的服务器上,那么带宽就基本上会被图片所占满了,这会导致网站加载很慢(特别是图片加载很慢)。‍什么是图床为了解决图片的问题,市面出现了很多公司,提供图床服务:就是将图片上传到他们的服务器,然后返......
  • everything高级搜索-cnblog
    everything高级搜索用法基础4选项验证总结搜索方式高级搜索搜指定路径文件名: 文件名路径不含文件名: !文件名包含单词路径包含指定内容: 路径content:内容大小写区分大小写搜索搜指定路径文件名: case:文件名路径全字匹配全字搜指定路径文件名: whol......
  • [概述]博客随笔/文章/日记食用指北
    标签功能:[概述]:如何和本人&该博客打交道的方法在这里会一点点写给大家。[规划]:短期的,长期的,恒久的,临时的,想到啥写啥,不觉得自己是个能坚持很久的人,所以和各位共勉。[积累]:以文科学习为主,基本是电子稿,偶尔会暴字。[打卡]:主要是对于2的落实,包括完成进度和相关的感悟。[好题]:(......
  • 力扣第22题:括号生成 深度优先搜索(DFS)和它的优化(C++)
    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]思路递出去,再归回来,是为递归。DFS算法是利用递归思想的一种搜索算法。想象一个矿井,从地面到井底有多层......
  • 小学期第一次博客
    一、配置虚拟机环境首先,安装和配置虚拟机是整个项目的基础。选择适当的虚拟机管理软件(如VirtualBox或VMware)并安装Linux操作系统(如Ubuntu或CentOS)。配置好虚拟机后,需要确保虚拟机的网络设置为桥接模式,以便能够与外部网络通信。二、安装和配置Hadoop下载和安装Hadoop:从Hadoop的......
  • 【Java】毕业设计个人博客系统 ---- 代码+详解
    目录博客系统项目分析1.数据库设计1.1设计库表1.2代码实现1.3创建项目1.4配置application.yml配置文件2.项目公共模块2.1实体类2.2公共层2.2.1统一返回结果实体类2.2.2统一返回结果处理2.2.3统一异常处理3.获取博客列表3.1持久层数据库相关操作3.2约定......
  • 博客园商业之路:全园求偶遇,懂园子懂商业的创业合伙人
    各方面的因素将园子的商业化强推到一个关口,2024年7月-9月是决定园子命运的一个季度,我们将拼尽所有力气找各种可能的突破口,不会有任何保留。这个关口是最后关头,也是三年多来最好的时间窗口,天时地利最需要人和,找到对的人,最有可能在这个时间窗口,一将解园子二十年的商业化之愁。园中......
  • 修复CSDN博客浏览体验
    修改host39.156.66.10clarity.ms39.156.66.10g.csdnimg.cn39.156.66.10googlesyndication.com39.156.66.10pagead2.googlesyndication.com39.156.66.10sp0.baidu.com39.156.66.10v.clarity.ms39.156.66.10fundingchoicesmessages.google.com油猴脚本//==UserScr......