ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

开源全文搜索引擎MeiliSearch

2022-02-09 10:34:19  阅读:399  来源: 互联网

标签:meilisearch search https MeiliSearch json 搜索引擎 开源 key


单独安装 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 上搭个搜索服务,这下都省了

小结

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

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

标签:meilisearch,search,https,MeiliSearch,json,搜索引擎,开源,key
来源: https://blog.csdn.net/wbsu2004/article/details/122836549

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有