1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 开源全文搜索引擎MeiliSearch

开源全文搜索引擎MeiliSearch

时间:2023-07-26 20:17:38

相关推荐

开源全文搜索引擎MeiliSearch

单独安装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

端口

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

# 查看端口占用netstat -tunlp | grep 端口号

环境

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

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 keycurl \-H "X-Meili-API-Key: 27bb9198372f81f8b95fb75d0252912de061fb6fa90d0ad6eb347cc051f0abe3" \-X GET 'http://192.168.0.197:7700/keys'

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

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

# 进入到 movie.json 所在的目录cd /volume2/docker/meilisearch# 用命令行下载文件,已经下了可以跳过curl -L '/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

地址:/meilisearch/MeiliSearch

MeiliSearch

地址:/

MeiliSearch Documentation | MeiliSearch Documentation v0.24

地址:/

MeiliSearch vs Elasticsearch

地址:/why-should-you-use-meilisearch-over-elasticsearch/

We Built A Search Engine With MeiliSearch and JavaScript: Here’s How You Can Too | Hacker Noon

地址:/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

地址:/meilisearch/docs-searchbar.js/

90pixel/MeiliAdmin: Open Source MeiliSearch Management Tool

地址:/90pixel/MeiliAdmin

PHP使用MeiliSearch实现全文检索_织梦猫的博客-CSDN博客_meilisearch文档

地址:/jason19905/article/details/115055666

使用MeiliSearch实现Hugo博客搜索 - Jefferywang的烂笔头

地址:/post/hugo-meilisearch/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。