使用ElasticLunr.js进行客户端搜索

2023-11-05

任何博客或文档网站都需要搜索功能。 您可以通过多种方式实现这一目标,并且很可能会选择服务器端解决方案。 但是,如果您不想处理任何后端,则可以通过lunr.js在客户端实现所有后端。

几年前,我首次发现Lunr.js,但自从我决定使用服务器端选项(我还需要插入动态内容)以来,我就没有使用它。 但是,几周前,我决定采用客户端方法,我发现ElasticLunr.JS本质上是对Lunr.js的包装,可以使事情变得更容易。

汤姆和杰里–休战创伤,威廉·汉娜和约瑟夫·巴贝拉

创建索引非常简单(由ElasticLunr.com提供):

搜索很简单,如下所示:

如果您有一个像这样的Jekyll博客,则可以使用Liquid语法对所有帖子进行索引。 是我为该博客创建索引的方式。

现在,对于实际的搜索,我需要一个“前端”,一个搜索小部件。 由于ElasticLunr.js不提供此类工具,因此我编写了自己的工具。 好吧,实际上我不是从头开始创建它,而是重构了用于服务器端搜索的现有Search Widget。 而且,在进行重构的过程中,我了解了“老化软件”的实际含义。 这是一个简单的ReactJS小部件,大约有5个组件,并且只有很少的依赖项:经过3年根本没有使用它,运行npm install突然显示大约400(!)警告和错误。 我给项目留了一个绿色的构建标记,当我回到项目上时,什么也不做,它突然爆炸了。

为什么我取消服务器端搜索? 过去对我来说效果很好,我什至编写了自己的Github聊天机器人来索引和搜索Github Pages内容。 我拒绝了它,因为保持它变得昂贵(我认为我在所有云提供商上都没有免费套餐),此外,该产品未能吸引用户。

总之,如果您有类似的用例,强烈建议您研究lunr.js和/或elasticlunr.js。 另外,您可以重用我的搜索小部件!

翻译自: https://www.javacodegeeks.com/2020/02/clientside-search-with-elasticlunr-js.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用ElasticLunr.js进行客户端搜索 的相关文章

随机推荐

  • centOS中使用如下命令安装jenkins(详细)

    1 安装jdk wget https download oracle com otn java jdk 8u202 b08 1961070e4c9b4e26a04e7f5a083f551e jdk 8u202 linux x64 tar g
  • VS2017中缺少NuGet 程序包,没有NuGet

    今天装软件的时候 发现我VS2017缺少了NuGet程序包 然后找网上搜索 并没有找到解决步骤 后来去了官网才知道VS2017没有对应网址下载了 已经内嵌在VS2017安装命令台里了 官网在这 https www nuget org dow
  • win10系统开启扫描仪服务器,win10通用扫描仪安装步骤

    win10通用扫描仪安装步骤 为了更加方便地扫描图片文档 很多朋友都会在win10系统电脑中安装扫描仪 不过 最近一些朋友反馈自己在安装之后不知道从哪里打开 让扫描仪开始操作扫描 下面就让小编教我去扫描仪怎么安装吧 扫描仪怎么安装 1 进入
  • ZYNQ之FPGA LED 灯闪烁实验

    一 LED 灯简介 LED灯 又名发光二极管 LED灯工作电流很小 有的仅零点几毫安即可发光 抗冲击和抗震性能好 可靠性高 寿命长 由于这些优点 LED灯被广泛用在仪器仪表中作指示灯 液晶屏背光源等诸多领域 不同材料的发光二极管可以发出红
  • Django 错误之 No module named ‘MySQLdb’

    由于卸载Mysql时将很多相关依赖包都卸载了 重装mysql后启动django出现如下错误 django core exceptions ImproperlyConfigured Error loading MySQLdb module N
  • Linux Shell 之 Shell中的函数调用

    说起函数调用 相信大家也不会陌生 然而对于初学Shell的我来说 Shell中函数调用方式却有点让我不太习惯 自己也走了不少的弯路 因为传递参数时出了一个很 自然 的错误 也让我吃了不少的苦头 所以总结一下Shell中函数的调用方法 一 S
  • linux下设置线程亲和性

    linux下线程亲和性主要就是通过pthread setaffinity np 函数来完成 首先将线程需要绑定的core编号 添加到一个集合中 然后调用此函数就ok 测试代码如下 define GUN SOURCE include
  • 仿真4. 仿真平台架构设计

    背景 1 业务背景 我司对仿真系统的需求日渐增加 比如道路交通的仿真 船舶港口仿真 车联网 ad hoc 仿真 以及运营商承载网的仿真等 2 回顾 什么是仿真时钟 用于描述仿真时间的变化 在连续系统中 仿真时间的变化基于仿真时钟步长的确定
  • 激光三角测距

    激光三角测距原理 1 简介 1 1 Halcon基础 1 2 激光三角法测量系统 2 直射式激光三角测距法 3 斜射式激光三角测距法 3 工作原理 3 1 功能 3 2 普通面阵相机 3 3 线激光的选择 3 4 影响精度的因素 3 5 标
  • Android 禁止输入表情符

    添加过滤器 mEtContent setFilters inputFilters 实现过滤器 private InputFilter inputFilters new InputFilter new InputFilter Pattern
  • MySQL之DQL——查询语言

    前言 今天给大家带来关于数据库查询相关操作 希望各位看官能看个愉快 目录 一 基本概念 1 1 基本概念 1 2 SQL语言的分类 1 3 数据库的存储特点 二 MySQL 2 1 MySQL服务的登录和退出 2 2 MySQL服务的启动和
  • 重磅!Cloud Ace 在班加罗尔和孟买成立新的据点

    Cloud Ace Cooperation 总部位于东京千代田区 Makoto Aoki 总裁 很高兴地宣布 我们已经在班加罗尔建立了新的开发中心 并在孟买建立了新的销售办事处 作为 Cloud Ace 进一步扩大公司在印度业务的努力的一部
  • MySQL之DML

    1 添加数据 语法 insert into 表名 列名1 列名2 列名n values 值1 值2 值n 注意 1 列名和值要一一对应 2 如果表名后 不定义列名 则默认给所有列添加值 insert into 表名 values 值1 值2
  • 关于多线程爬取的加强练习

    多线程能够帮助我们提升爬取爬虫爬取的速度 上一篇文章我们也讲到了如何简单的使用多线程来爬取自己想要要去的东西 今天我们来加强以下 今天我们的目标是多线程爬取股票网站的信息 并保存成文件 本次保存文件的格式为txt 各位想保存别的格式也可以哦
  • 带vector<T>的模板函数

    若两个函数的逻辑相同 但参数类型不同 则可以把这2个函数合并为一个模板函数 有利于精简代码和提高可读性 比如 函数A 将CString的三个动态数组 vector
  • java 使用itextpdf工具实现HTML转PDF文件

    java 使用itextpdf工具实现HTML转PDF文件 本文转载https my oschina net 960823 blog 1588166内容 demo maven依赖包
  • Ubuntu16.04安装ROS时,sudo rosdep init报错,Error: cannot download default sources list from:

    安装ROS时需要安装rosdep 但是由于外网访问不了 所以访问不了https raw githubusercontent com 网站 因此在执行sudo rosdep init这一步时 会提示 如下图 ERROR cannot down
  • LINUX中常用操作命令

    Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机 重启机器 Linux管道 Linux软件包管理 vim使用 用户及用户组管理 文件权限管理 大牛笔记 www weixuehao com 来自 http ww
  • 5.1之前, 全局变量存储在_G这个table中, 这样的操作:5.3 lua_setupvalue

    5 1之前 全局变量存储在 G这个table中 这样的操作 a 1 相当于 G a 1 但在5 2之后 引入了 ENV叫做环境 与 G全局变量表产生了一些混淆 需要从原理上做一个理解 在5 2中 操作a 1 相当于 ENV a 1 这是一个
  • 使用ElasticLunr.js进行客户端搜索

    任何博客或文档网站都需要搜索功能 您可以通过多种方式实现这一目标 并且很可能会选择服务器端解决方案 但是 如果您不想处理任何后端 则可以通过lunr js在客户端实现所有后端 几年前 我首次发现Lunr js 但自从我决定使用服务器端选项