快速搭建本地全文搜索

MeiliSearch

在这里插入图片描述

说起全文检索,在项目开发中,用的最多的就是 ElaticSearch 了,ElaticSearch 是基于 Apache Lucene 开发的全文检索服务,是一个端到端的解决方案,因此,部署和维护都非常复杂。今天介绍的这个全文搜索服务 MeiliSearch,是一个轻量级的全文检索服务,可以快速搭建本地全文搜索,下表中是 MeiliSearch 与 ElasticSearch 的比较。

特性ElasticsearchMeiliSearch
可扩展性高度可扩展和分布式轻量级,较少关注扩展性
全文搜索先进且强大简单且高效
设置更复杂,需要配置简单且快速设置
性能高性能,但可能资源密集优化速度,低延迟
安全强大的安全功能基本安全功能
可扩展性通过插件和脚本高度可扩展可扩展性有限
错字容忍基本错字容忍高级错字容忍
分析先进的分析能力分析功能有限
API全面,但更复杂简单直观
资源使用需要更多资源轻量级,资源需求少

在企业开发中,稳定性很重要,MeiliSearch不支持集群,需要通过 K8S 进行管理,如果出现故障,需要几秒钟时间进行服务的重建,可以应用于可靠性要求不高的业务场景。

核心概念

文档 Document

在MeiliSearch中文档就相当于数据库的表,文档对象中字段名和字段值,通过键值对的形式进行存储。
在这里插入图片描述

索引 Index

MeiliSearch中,文档用于存储数据,只有进行索引的文档才能搜索,这里的索引可以理解为数据库中的索引,由于全文检索使用的是反向索引,如果没有索引是无法进行索引,所以搜索的前提就是创建索引。

主键 Primary Key

主键是文档的唯一索引,每个文档都有自己的主键,创建同样主键的文档,后创建的文档会覆盖先创建的文档。

相关性 Relevance

文档相关性指是MeiliSearch返回文档列表时,会根据条件对文档进行排序,以下是排序的规则,MeiliSearch同时支持自定义排序。

匹配词频
  • 解释:搜索结果中匹配搜索词次数越多的文档会被优先显示。
  • 优先级:最高优先级。
  • 示例:如果搜索词是“apple”,包含多个“apple”词的文档会排在前面。
匹配属性
  • 解释:匹配的单词在特定的属性(字段)中出现时,相关性更高。
  • 优先级:较低优先级。
  • 示例:如果搜索词出现在被认为更重要的字段中(如标题字段),相关性会更高。
匹配拼写错误词数
  • 解释:匹配的单词中错字(拼写错误)越少,相关性越高。
  • 优先级:最低优先级。
  • 示例:如果搜索词与文档中的词完全匹配(无错字),则该文档的相关性会更高。
单词接近度
  • 解释:匹配的单词在文档中彼此之间的距离越近,相关性越高。
  • 优先级:中等优先级。
  • 示例:如果搜索词“new york”在文档中连续出现,而不是分散在文档的不同部分,该文档的排名会更高。

用 docker 启动

  1. 拉取镜像并启动,MEILI_ENV 参数用的 developement,开发不验证 master_key。
docker pull getmeili/meilisearch:v1.8.0

docker run -it --rm \
    -p 7700:7700 \
    -e MEILI_ENV='development' \
    -v $(pwd)/meili_data:/meili_data \
    getmeili/meilisearch:v1.8
  1. 下载数据并导入,下载数据。
curl \
  -X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=id' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer aSampleMasterKey' \
  --data-binary @movies.json
  1. 进入管理页面 http://localhost:7700/,搜索运行正常
    在这里插入图片描述
  2. 下载 Postman API Collection并导入 Postman,参数配置
    在这里插入图片描述

总结

MeiliSearch配置简单,如果项目想快速搭建全文检索服务可以采用 MeiliSearch,由于 MeiliSearch 目前还不支持集群,对于不能中断的业务不建议使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值