iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >VuePress使用Algolia实现全文搜索
  • 713
分享到

VuePress使用Algolia实现全文搜索

2024-04-02 19:04:59 713人浏览 八月长安
摘要

目录引言确认眼神申请授权实施部署调试爬取总结回顾引言 AlGolia 为构建者提供构建世界级体验所需的搜索和推荐服务。Algolia 是一个数据库实时搜索服务,能够提供毫秒级的数据库

引言

AlGolia 为构建者提供构建世界级体验所需的搜索和推荐服务。Algolia 是一个数据库实时搜索服务,能够提供毫秒级的数据库搜索服务,并且其服务能以 api 的形式方便地布局到网页、客户端、APP 等多种场景。

VuePress 官方文档就有 Algolia 搜索插件,可以直接安装使用,使用 Algolia 搜索最大的好处就是方便,它会自动爬取网站的页面内容并构建索引,你只用申请一个 Algolia 授权服务,在网站上添加一些代码,就可以像添加统计代码一样,实现一个全文搜索功能了。

为了给网站再加点灵魂实现一个这样的全文搜索功能,刚好今天有空且申请的Algolia也已通过,官网已经将 AppID 等信息发邮件通知了,那说干就干吧,还得是撸起袖子加油干!

确认眼神

好不好用,那得上图,有图有真相,实实在在的效果出来了,坑还是有的但是帮大家走一下,避免了好些冤枉路,具体我也会在文中加以说明的。

先看导航图

再看搜索图

申请授权

已经确认过眼神?了,那么这就是你要用的,那怎么用呢,不可能直接网上一搜代码一找就能用的,但凡商业的东西,多少还是会有些限制的。

第一步先申请授权,申请地址:docsearch

打开后填写网站地址、邮箱和仓库地址等信息,然后勾选上下面三项,并提交。之后就静待邮件,一般两三天就都会有回复的。

注意: 如果你没有注册过账号,这里官网会用这个邮箱帮你注册账号,且网站需要是公开可访问的 如果你网站不是他们要求的类型的,可以先搭建个文档类型的再进行申请。

如果申请通过,我们就会收到邮件,内容如下:

官方邮箱地址:support@algolia.com

根据文中内容,回复确认你是站长网站的维护者并可以更改代码并简单说明要用 DocSearch 产品即可,之后就会得到官方发送的 AppID 等信息,内容如下:

通过 文中的邀请链接,就可以设置密码,然后用你的邮箱登录就可以了。algolia 登录页

实施部署

vuepress 官方有 docsearch 插件相关的文档,☞ 文档传送门,有文档不见得就能不踩坑的一次成功!有些东西还需要特别说明下的。

安装方法:

// 安装
npm i -D @vuepress/plugin-docsearch@next

// 配置 vuepress/docs/.vuepress/config.js
const { docsearchPlugin } = require('@vuepress/plugin-docsearch')

module.exports = {
  plugins: [
    docsearchPlugin({
        // 配置项 配置上申请下来的 apiKey、indexName、appId
        apiKey: '',
        indexName: '',
        appId: '',
        placeholder: '搜索文档',
        translations: {
          button: {
            buttonText: '搜索文档',
          },
        }
    }),
  ],
}

注意:安装的插件版本,要同使用的 vuepress 版本保持一致,否则会报错不能用。尤其是早期创建的项目,现在直接按照文档安装最新版本的插件,就可能会存在问题。

就这么简单么,so easy !当你以为一切顺利万事大吉的时候,然而,很可能你的全文搜索还不可以用。可能一搜还都是找不到结果,那这是为何呢,文章还未结束,配置还在进行,且往下看!

调试爬取

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

这个时候要使用官方工具进行调试,调试工具地址,打开调试台,打开 Overview 菜单。如果显示成功爬取,也有 Monitoring Success 的数据,但 Records 为 0,那大概是爬虫提取数据的逻辑有问题,点击左侧选项栏中的 Editor,查看具体的爬虫逻辑:

打开 Editor 菜单,可以看到调试爬虫代码的界面。这里可以根据 vuepress 官方提供的模版,看着调整。

vuepress 官方爬虫配置示例:

主要代码贴出来,具体详细的,大家直接转到 docsearch 插件文档

new Crawler({
  rateLimit: 8,
  // 这是 Algolia 开始抓取网站的初始地址
  // 如果你的网站被分为数个独立部分,你可能需要在此设置多个入口链接
  startUrls: ["https://docs.ycsnews.com/"],
  renderjavascript: false,
  // 如果你在使用 Sitemap 插件 (如: vuepress-plugin-sitemap2),你可以提供 Sitemap 链接
  sitemaps: ["Https://docs.ycsnews.com/sitemap.xml"],
  ignoreCanonicalTo: true,
  // 这是 Algolia 抓取 URL 的范围 没有特殊要求就全站抓取
  discoveryPatterns: ["https://docs.ycsnews.com/**"],
  // 爬虫执行的计划时间,可根据文档更新频率设置
  schedule: "at 11:50 every 1 day",
  actions: [
    {
      // 使用适当的名称为索引命名 申请授权的时候就会有的
      indexName: "ycsnews", // 默认会填好 不是自己的可以修改下
      // 索引生效的路径
      pathsToMatch: ["https://docs.ycsnews.com/**"],
      // 控制 Algolia 如何抓取你的站点
      recordExtractor: ({ helpers }) => {
        return helpers.docsearch({
        // Algolia 初次默认的可能都存在问题,所以这个还是根据 vuepress 官方提供的,或者自己审查元素查找匹配节点进行修改
          recordProps: {
            lvl1: ".theme-default-content h1",
            content:
              ".theme-default-content .theme-default-content div .theme-default-content p .theme-default-content li",
            lvl0: {
              selectors: ".sidebar-heading.active",
              defaultValue: "Documentation",
            },
            lvl2: ".theme-default-content h2",
            lvl3: ".theme-default-content h3",
            lvl4: ".theme-default-content h4",
            lvl5: ".theme-default-content h5",
            lvl6: ".theme-default-content h6",
            lang: "",
            tags: {
              defaultValue: ["v1"],
            },
          },
          indexHeadings: true,
          aggregateContent: true,
        });
      },
    },
  ],
  // 下面的配置基本不用修改 大致看下即可
  initialIndexSettings: {
    ycsnews: {
      attributesForFaceting: ["type", "lang", "language", "version"],
      attributesToRetrieve: [
        "hierarchy",
        "content",
        "anchor",
        "url",
        "url_without_anchor",
        "type",
      ],
      attributesToHighlight: ["hierarchy", "hierarchy_camel", "content"],
      attributesToSnippet: ["content:10"],
      camelCaseAttributes: ["hierarchy", "hierarchy_radio", "content"],
      searchableAttributes: [
        "unordered(hierarchy_radio_camel.lvl0)",
        "unordered(hierarchy_radio.lvl0)",
        "unordered(hierarchy_radio_camel.lvl1)",
        "unordered(hierarchy_radio.lvl1)",
        "unordered(hierarchy_radio_camel.lvl2)",
        "unordered(hierarchy_radio.lvl2)",
        "unordered(hierarchy_radio_camel.lvl3)",
        "unordered(hierarchy_radio.lvl3)",
        "unordered(hierarchy_radio_camel.lvl4)",
        "unordered(hierarchy_radio.lvl4)",
        "unordered(hierarchy_radio_camel.lvl5)",
        "unordered(hierarchy_radio.lvl5)",
        "unordered(hierarchy_radio_camel.lvl6)",
        "unordered(hierarchy_radio.lvl6)",
        "unordered(hierarchy_camel.lvl0)",
        "unordered(hierarchy.lvl0)",
        "unordered(hierarchy_camel.lvl1)",
        "unordered(hierarchy.lvl1)",
        "unordered(hierarchy_camel.lvl2)",
        "unordered(hierarchy.lvl2)",
        "unordered(hierarchy_camel.lvl3)",
        "unordered(hierarchy.lvl3)",
        "unordered(hierarchy_camel.lvl4)",
        "unordered(hierarchy.lvl4)",
        "unordered(hierarchy_camel.lvl5)",
        "unordered(hierarchy.lvl5)",
        "unordered(hierarchy_camel.lvl6)",
        "unordered(hierarchy.lvl6)",
        "content",
      ],
      distinct: true,
      attributeForDistinct: "url",
      customRanking: [
        "desc(weight.pageRank)",
        "desc(weight.level)",
        "asc(weight.position)",
      ],
      ranking: [
        "Words",
        "filters",
        "typo",
        "attribute",
        "proximity",
        "exact",
        "custom",
      ],
      highlightPreTag: '<span class="algolia-docsearch-suggestion--highlight">',
      highlightPostTag: "</span>",
      minWordSizefor1Typo: 3,
      minWordSizefor2Typos: 7,
      allowTyposOnNumericTokens: false,
      minProximity: 1,
      ignorePlurals: true,
      advancedSyntax: true,
      attributeCriteriaComputedByMinProximity: true,
      removeWordsIfNoResults: "allOptional",
    },
  },
  appId: "",// 默认会填好 不是自己的可以修改下
  apiKey: "", // 默认会填好 不是自己的可以修改下
});

配置完成后,点击右上角的 save 进行保存在;然后找个文档的链接,测试下,看是否能成功,成功则进行下一步,否则继续调整抓取规则,指导能抓取成功!如下图,多测几个链接,保证都可用。

链接测试完成后,返回到 Overview 菜单, 点击右上角的 Restart crawling 按钮,进行抓取,成功后,下面的 Indices 栏会显示 Records 数,此时再去自己的网站试试,应该就可以了,如果不行,就重复执行下,再等一等再试!

等到看到类似这样的效果图,就可以了,至于其他高级的功能,就自行开发,好好利用吧!

总结回顾

对于 vuepress 来说,就是安装个插件配置参数的事,可还是让人耽误了好些时间。官方文档中并未对常见的一些问题予以说明,还需咱们自己踩坑,希望大家也能将自己日常踩的坑分享出来,避免更多的人,无休止的耗费精力。祝大家一切顺利,所踩之坑,皆能被填平!据说,点赞加关注的人都被领导加鸡腿了!?

以上就是VuePress使用Algolia实现全文搜索的详细内容,更多关于VuePress Algolia全文搜索的资料请关注编程网其它相关文章!

--结束END--

本文标题: VuePress使用Algolia实现全文搜索

本文链接: https://www.lsjlt.com/news/153504.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • VuePress使用Algolia实现全文搜索
    目录引言确认眼神申请授权实施部署调试爬取总结回顾引言 Algolia 为构建者提供构建世界级体验所需的搜索和推荐服务。Algolia 是一个数据库实时搜索服务,能够提供毫秒级的数据库...
    99+
    2022-11-13
  • 全文搜索Sphinx怎么实现
    本篇内容介绍了“全文搜索Sphinx怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.Sphinx简介1.1.Sphinx是什么Sp...
    99+
    2023-06-04
  • PostgreSQL中如何实现全文搜索
    PostgreSQL中如何实现全文搜索,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。CREATE TABLE auth...
    99+
    2022-10-18
  • JavaScript中怎么实现全文搜索
    这篇文章将为大家详细讲解有关JavaScript中怎么实现全文搜索,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。相关性对每一个搜索查询,我们很容易给每个文档...
    99+
    2022-10-19
  • Sphinx 实现全文搜索的 PHP 应用指南
    引言:在现代的 Web 应用中,全文搜索功能已经成为了一个必备的特性。因为用户常常会通过输入关键词来搜索和匹配他们所需要的内容。为了提供高效和准确的搜索结果,我们需要一个强大的搜索引擎。而 Sphinx 作为一个开源的全文搜索引擎,它为 P...
    99+
    2023-10-21
    PHP 全文搜索 Sphinx
  • 如何使用MongoDB实现数据的全文搜索功能
    如何使用MongoDB实现数据的全文搜索功能导语:随着信息化时代的迅猛发展,全文搜索功能成为了许多应用程序的必备功能。作为一个流行的NoSQL数据库,MongoDB也提供了强大的全文搜索能力。本文将介绍如何使用MongoDB实现数据的全文搜...
    99+
    2023-10-22
    MongoDB 全文搜索 数据实现
  • SQL Server实现全文搜索查询详解
    目录一、概述二、全文搜索查询三、将全文搜索查询与 LIKE 谓词进行比较四、全文搜索体系结构4.1、SQL Server 进程4.2、过滤器守护程序主机进程五、全文搜索处理5.1、全文索引过程5.2、全文查询流程六、全文...
    99+
    2023-04-03
    SQL Server全文搜索 SQL全文搜索查询
  • SQL Server如何实现全文搜索查询
    本篇内容介绍了“SQL Server如何实现全文搜索查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述全文索引在表中包括一...
    99+
    2023-07-05
  • MySQL中如何实现全文搜索操作
    本篇文章为大家展示了MySQL中如何实现全文搜索操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。全文搜索通过MATCH()函数完成。> CREATE TAB...
    99+
    2022-10-18
  • SQLite3如何实现数据库全文搜索
    这篇文章主要为大家展示了“SQLite3如何实现数据库全文搜索”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQLite3如何实现数据库全文搜索”这篇文章吧。对...
    99+
    2022-10-19
  • SQL Server实现全文搜索查询详解
    目录一、概述二、全文搜索查询三、将全文搜索查询与 LIKE 谓词进行比较四、全文搜索体系结构4.1、SQL Server 进程4.2、过滤器守护程序主机进程五、全文搜索处理5.1、全...
    99+
    2023-05-14
    SQL Server全文搜索 SQL全文搜索查询
  • 如何使用MySQL的全文检索功能实现高效率的文本搜索?
    如何使用MySQL的全文检索功能实现高效率的文本搜索?作者:AI助手摘要:本文介绍了如何使用MySQL的全文检索功能,在数据库中实现高效率的文本搜索。首先,我们会讲解MySQL全文索引的基本原理和使用方法。然后,我们会探讨如何优化全文检索的...
    99+
    2023-10-22
    MySQL 全文检索 文本搜索
  • RiSearch PHP 实现站内搜索的全文检索方案
    随着互联网的发展,网站的内容和数据量越来越庞大,传统的数据库查询已经不能满足快速搜索的需求。为了提升用户体验和提高网站的搜索效率,全文检索技术应运而生。RiSearch是一种基于PHP的全文检索引擎,它为我们提供了一种高效、简单的站内搜索解...
    99+
    2023-10-21
    PHP 全文检索 RiSearch
  • SQLite中如何使用全文搜索FTS
    这篇文章主要介绍SQLite中如何使用全文搜索FTS,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! SQLite中使用全文搜索FTS SQLite支持全文搜索。通过全文搜索功能,...
    99+
    2022-10-19
  • Sphinx PHP 实现全文搜索的搜索历史记录与推荐功能
    引言:随着互联网的快速发展,全文搜索已经成为了许多网站和应用程序中必不可少的功能。Sphinx是一个功能强大的开源全文搜索引擎,它可以快速地搜索和检索大量的文本数据。本文将介绍如何使用Sphinx PHP来实现全文搜索的搜索历史记录与推荐功...
    99+
    2023-10-21
    PHP (编程语言) Sphinx (用于全文搜索)
  • Sphinx PHP 实现全文搜索的中文分词与检索优化
    引言:随着互联网的发展和信息爆炸的时代,全文搜索引擎成为了人们进行信息检索的重要工具。传统的全文搜索引擎主要针对英文等西方语言进行优化,而对于中文这种特殊的语言来说,传统的全文搜索引擎存在一些问题。本文将介绍如何利用Sphinx PHP实现...
    99+
    2023-10-21
    Sphinx - A software library used for performing full-text se
  • SQL Server中怎么实现全文搜索功能
    这期内容当中小编将会给大家带来有关SQL Server中怎么实现全文搜索功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一,创建全文目录和唯一索引创建全文索引之前,必须...
    99+
    2022-10-18
  • Python下实现文件中的全文搜索小测试
    username = 'test' password = '123456' while True: user_str = raw_input("Please input your name>>") pass_str = r...
    99+
    2023-01-31
    文件 小测试 全文
  • mysql+mybatis下全文搜索的使用方法
    第一步在你的需要全文搜索的列上点击 全文搜索full text类型索引,注意我的例子是该列是个longText类型的列 第一步建立fulltext类型索引如下图 索引类型选择fu...
    99+
    2022-11-13
  • Spring Boot整合Elasticsearch如何实现全文搜索引擎
    这篇文章给大家分享的是有关Spring Boot整合Elasticsearch如何实现全文搜索引擎的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简单说,ElasticSearch(简称 ES)是搜索引擎,是结构化...
    99+
    2023-05-30
    spring boot elasticsearch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作