开源全文搜索引擎MeiliSearch

news/2024/11/24 0:22:49/

单独安装 MeiliSearch 似乎并没有什么实际的用途,本文只是记录了老苏一次失败的探索。想法应该是没问题的,奈何实力不够啊。

前言

老苏博客上的搜索变得越来越慢,慢的原因应该主要是 2 个:一个是 search.json 的加载速度,一个是全文检索的速度。前者可以通过 CDN 或者其他方式来解决,后者老苏想将 hexo-generator-searchdb 生成的搜索索引文件放到一个 真正的 全文搜索引擎中,而不是继续使用 Local Search

其实目前慢的主要原因应该还是前者;

找来找去找到了 MeiliSaerch ,这是一个建立在 LMDB键值 存储之上的全文搜索引擎。与 Elasticsearch 类似,但 MeiliSearch 可能更适合中等规模的数据集(即少于 500 万行)和较小的应用程序。MeiliSearch 提供快速、相关且可容忍错字的搜索,几乎不需要设置时间,对于任何需要专注于最终用户的强大且易于访问的搜索引擎的开发人员来说,它都是一个很好的解决方案。

老苏想研究一下技术可行性,但是搜索了一下并没有找到现成的方案,第一步打算先安装一个 MeiliSearch,亲自感受下具体的功能,如果没问题的话再来研究下一步

什么是 MeiliSearch ?

MeiliSearch 是一个基于 Rust 语言开发的强大、快速、开源、易于使用和部署的搜索引擎。搜索和索引都是高度可定制的。提供开箱即用的功能,例如错字容忍、过滤器和同义词,支持中文。

什么是 LMDB ?

LMDB 数据库和常用的 SQLiteMySQL 等关系型数据库不同, 它是一种非关系型数据库,以键值对的方式进行存储(更像是字典),其中 “键”“值” 的类型都是字符串类型。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 meilisearch ,选择第一个 getmeili/meilisearch,版本选择 latest

docker 文件夹中,创建一个新文件夹,并将其命名为 meilisearch

文件夹装载路径说明
docker/meilisearch/data.ms存放数据

端口

端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
77007700

环境

环境变量是可选的,默认是 developer 模式,可以不设置 master key ,只有在指定为 product 模式才必须设置的

可变
MEILI_MASTER_KEYmaster key

MeiliSearch 的每个实例都有三个键:masterprivatepublic。每个密钥在 API 路由上都有一组给定的权限。每当您设置或更改 master key 时,都会自动生成 private keypublic key

  • master key 可以用来存取所有的路由
  • private key 可以用来存取除了 /keys (用来获取 master keyprivate key )的所有路由。
  • public key 只能用来进行搜索操作。

老苏生成 master key 的方式是在 Bitwarden 中用密码生成器

运行

在浏览器中输入 http://群晖IP:7700 就能看到主界面

由于生产环境需要 API-key 进行搜索,因此 Web 界面仅在开发模式下可用。

日志中

官方示例

# 获取private key和public key
curl \-H "X-Meili-API-Key: 27bb9198372f81f8b95fb75d0252912de061fb6fa90d0ad6eb347cc051f0abe3" \-X GET 'http://192.168.0.197:7700/keys'

官方提供了一个电影数据库 movie.json ,文件下载地址:https://docs.meilisearch.com/movies.json

将文件上传到群晖的 meilisearch 目录

# 进入到 movie.json 所在的目录
cd /volume2/docker/meilisearch# 用命令行下载文件,已经下了可以跳过
curl -L 'https://docs.meilisearch.com/movies.json' -o movies.json# 添加文档到 movies 索引
curl -i -X POST 'http://192.168.0.197:7700/indexes/movies/documents' \--header 'content-type: application/json' \--data-binary @movies.json

回到 web 界面,刷新一下

官网的动图能清晰的显示如何使用

search.json

默认情况下 hexo-generator-searchdb 生成的搜索索引文件是 search.xml,但其本身支持 XMLJSON 格式输出,所以只要改一下配置即可,search.json 位于博客的根目录下,需将其上传到群晖的 meilisearch 目录,然后执行下面的命令

# 添加文档到 movies 索引
curl -i -X POST 'http://192.168.0.197:7700/indexes/search/documents' \--header 'content-type: application/json' \--data-binary @search.json

但是并没有像官方示例一样,老苏尝试过增加 primaryKey,但始终没有结果,可能是格式不对吧,一时半会儿也没研究明白,先这样吧,等有精力了再说

本来还想着是不是在 vercel 上搭个搜索服务,这下都省了

小结

目前情况下,博客上点 搜索 后弹出的搜索界面,如果是一直转圈,最好是等一会儿,或者重新再刷新一下页面

如果直接显示 放大镜,也就是下面👇这样

那就可以直接输入关键词进行搜索,基本上是秒开

所以再一次证实了慢的原因是加载 search.json 慢,而不是搜索本身慢,因此 MeiliSearch 的研究也就不急在一时。

参考文档

meilisearch/MeiliSearch: Powerful, fast, and an easy to use search engine
地址:https://github.com/meilisearch/MeiliSearch

MeiliSearch
地址:https://www.meilisearch.com/

MeiliSearch Documentation | MeiliSearch Documentation v0.24
地址:https://docs.meilisearch.com/

MeiliSearch vs Elasticsearch
地址:https://blog.meilisearch.com/why-should-you-use-meilisearch-over-elasticsearch/

We Built A Search Engine With MeiliSearch and JavaScript: Here’s How You Can Too | Hacker Noon
地址:https://hackernoon.com/we-built-a-search-engine-with-meilisearch-and-javascript-heres-how-you-can-too-zz2d3zae

meilisearch/docs-searchbar.js: Front-end search bar for documentation with MeiliSearch
地址:https://github.com/meilisearch/docs-searchbar.js/

90pixel/MeiliAdmin: Open Source MeiliSearch Management Tool
地址:https://github.com/90pixel/MeiliAdmin

PHP使用MeiliSearch实现全文检索_织梦猫的博客-CSDN博客_meilisearch文档
地址:https://blog.csdn.net/jason19905/article/details/115055666

使用MeiliSearch实现Hugo博客搜索 - Jefferywang的烂笔头
地址:https://blog.wangjunfeng.com/post/hugo-meilisearch/


http://www.ppmy.cn/news/684120.html

相关文章

用 OpenCV 检测猫脸

Python中的OpenCV猫脸检测代码 使用 OpenCV 的预训练级联分类器可以轻松检测照片或视频中的猫脸。完成所有工作的代码: import cv2cascade cv2.CascadeClassifier(haarcascade_frontalcatface.xml) cap cv2.VideoCapture(0) while True: ret, img cap.read() img…

矿难猫盘救砖刷回OneSpace系统的记录

背景 去年年末看着矿难来了,买了个2.5寸的小猫盘,想着在B站录点小视频的,后来录完开箱,想再录个刷机视频的,第一次刷成功了,但是没录像,第二次录像了,但是没刷成功,一气…

坏坏猫搜索怎么显示服务器异常,坏坏猫APP怎么了?搜索为什么不能用了? - 爱游戏...

坏坏猫APP是一款非常实用的小说阅读器,这款软件最大的优势就是小说多且免费,现在这样的软件不多了。坏坏猫里面有非常多的小说,几乎全网资源都能够搜到,所以要是你想看小说,使用这款软件非常合适。现在已经有非常多的用…

Navicat-导航猫

开发公司 Premiumsoft(优质的软件,卓软) 关于 PremiumSoft PremiumSoft 成立于 1999 年,开发了适用于 Windows、macOS、Linux 和 iOS 的各种应用程序。 Navicat 是全球超过 500 万数据库用户的选择。来自 7 大洲和 138 个国家/地…

mysql数据库精确匹配搜索_mysql 模糊搜索方法

很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录。在后台,这些程序使用在一个SELECT 查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候。…

自适应变异麻雀搜索优化算法

文章目录 一、理论基础1、麻雀搜索算法2、改进麻雀搜索算法2.1 猫映射混沌初始化种群2.2 Tent混沌和柯西变异扰动策略2.2.1 Tent混沌扰动2.2.2 柯西变异 2.3 改进探索者位置更新公式2.4 探索者-跟随者自适应调整策略2.5 改进后麻雀搜索算法 二、仿真实验与分析三、参考文献 一、…

【acwing】165. 小猫爬山(DFS之剪枝)

穿越隧道 搜索: 1.优化搜索顺序 大部分情况下,应优选搜索分支较少的节点 2.排除等效冗余 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索(DP) 在这题中 1.优化搜索顺序:√(有) 猫越重,分支可能越少。 …

最好用的五个黑科技搜索引擎推荐

一. 数据搜:http://data.chongbuluo.com/ 「数据搜」这个网站就是搜索一些热词和数据指数的,包括百度指数、阿里指数、微博指数、微信指数、搜狗指数等等。当然,还有一些汽车数据、腾讯大数据、票房数据相关数据查询网站。 估计很多人经常用的…