快速搭建本地全文搜索

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.0docker 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 目前还不支持集群,对于不能中断的业务不建议使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在go项目中实现发送邮箱验证码、邮箱+验证码登录

前期准备 GoLand :2024.1.1 下载官网:https://www.jetbrains.com/zh-cn/go/download/other.html Postman: 下载官网:https://www.postman.com/downloads/ 效果图(使用Postman) Google: QQ: And …

创建vue工程、Vue项目的目录结构、Vue项目-启动、API风格

环境准备 介绍:create-vue是Vue官方提供的最新的脚手架工具,用于快速生成一个工程化的Vue项目create-vue提供如下功能: 统一的目录结构 本地调试 热部署 单元测试 集成打包依赖环境:NodeJS 安装NodeJS 一、 创建vue工程 npm 类…

自定义横向思维导图,横向组织架构图,横向树图。可以自定义节点颜色,样式,还可以导出为图片

最近公司设计要求根据目录结构,横向展示。所以做了一个横向的思维导图,横向的树结构,横向的组织架构图,可以自定义节点颜色,样式,还可以导出为图片 话不多说,直接上图片,这个就是一…

使用redis优化纯真IP库访问

每次请求都需要加载10m的纯真IP qqwry.dat 文件,自己测试不会发现问题,但如果访问量上去了,会影响每次请求的相应效率,并且会消耗一定的io读写,故打算优化 优化方案 每个IP区间之间不存在交集,每个查找只要…

【python】python省市水资源数据分析可视化(源码+数据)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

2024年失业率狂飙18.1%,史上最难就业季即将来临,该如何逆袭?_2024年失业潮

【2024年被称为最难就业年,1158万大学生面临难题】 距离2024年毕业季还剩不到4个月,毕业学员将面临空前严峻的就业压力!具国家统 计局的数据显示,1-2月份,16至24岁年轻人的失业率飙到18.1%,也就是说&…

微服务:利用RestTemplate实现远程调用

打算系统学习一下微服务知识,从今天开始记录。 远程调用 调用order接口,查询。 由于实现还未封装用户信息,所以为null。 下面我们来使用远程调用用户服务的接口,然后封装一下用户信息返回即可。 流程图 配置类中注入RestTe…

文心一言 VS 讯飞星火 VS chatgpt (265)-- 算法导论20.1 4题

四、假设不使用一棵叠加的度为 u \sqrt{u} u ​ 的树,而是使用一棵叠加的度为 u 1 k u^{\frac{1}{k}} uk1​的树,这里 k 是大于 1 的常数,则这样的一棵树的高度是多少?又每个操作将需要多长时间?如果要写代码&#xf…

模板中的右值引用(万能引用)、引用折叠与完美转发

模板中的右值引用(万能引用)、引用折叠与完美转发 文章目录 模板中的右值引用(万能引用)、引用折叠与完美转发一、万能引用与引用折叠1. 模板中的右值引用2. 自动类型推导(auto)与万能引用3. 引用折叠与万能引用4. lambda表达式捕…

数据可视化第十天(爬虫爬取某瓣星际穿越电影评论,并且用词云图找出关键词)

开头提醒 本次爬取的是用户评论,只供学习使用,不会进行数据的传播。希望大家合法利用爬虫。 获得数据 #总程序 import requests from fake_useragent import UserAgent import timefuUserAgent()headers{User-Agent:fu.random }page_listrange(0,10) …

音视频入门基础:像素格式专题(3)——FFmpeg源码解析BMP格式图片的底层实现原理

音视频入门基础:像素格式专题系列文章: 音视频入门基础:像素格式专题(1)——RGB简介 音视频入门基础:像素格式专题(2)——不通过第三方库将RGB24格式视频转换为BMP格式图片 音视频…

人工智能+量子计算:飞跃现实边界还是科技幻想?

人工智能量子计算,这是一种可能改变世界的伙伴关系。 在科技的前沿,两大革命性技术——人工智能(AI)和量子计算——正站在合作的十字路口。人工智能,以其强大的数据分析能力和模式识别,正在改变着我们生活…

传感器通过Profinet转Modbus网关与PLC通讯在生产线的应用

Profinet转Modbus(XD-MDPN100/300)网关可视作一座桥梁,能够实现Profinet协议与Modbus协议相互转换,支持Modbus RTU主站/从站,并且Profinet转Modbus网关设备自带网口和串口,既可以实现协议的转换&#xff0c…

Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版

CrossOver是一款在Mac上运行Windows应用程序的软件,无需安装虚拟机或重启计算机,简化了操作过程,提高了工作效率,为用户带来便捷体验。前往Mac青桔下载,享受前所未有的便利和高效。摘要由作者通过智能技术生成 CrossOv…

robosuite导入自定义机器人

目录 目的:案例一:成果展示具体步骤:URDF文件准备xml文件生成xml修改机器人构建 目的: 实现其他标准/非标准机器人的构建 案例一: 成果展示 添加机器人JAKA ZU 7 这个模型 具体步骤: URDF文件准备 从…

python-docx 在word中指定位置插入图片或表格

docx库add_picture()方法不支持对图片位置的设置 1、新建一个1行3列的表格,在中间的一列中插入图片 from docx import Document from docx.shared import Pt from docx.oxml.shared import OxmlElement from docx.enum.text import WD_ALIGN_PARAGRAPHdef add_cen…

Nacos 进阶篇---Nacos服务端怎么维护不健康的微服务实例 ?(七)

一、引言 在 Nacos 后台管理服务列表中,我们可以看到微服务列表,其中有一栏叫“健康实例数” (如下图),表示对应的客户端实例信息是否可用状态。 那Nacos服务端是怎么感知客户端的状态是否可用呢 ? 本章…

基于树的存储数据结构demo

一.简介 由于之前博主尝试Java重构redis,在redis中的的字典数据结构底层也是采用数组实现,字典中存在两个hash表,一个是用于存储数据,另一个被用于rehash扩容为前者两倍。但是我注意到了在redis的数据结构中,并没有像…

【MySQL】库的操作和表的操作

库的操作和表的操作 一、库的操作1、创建数据库(create)2、字符集和校验规则(1)查看系统默认字符集以及校验规则(2)查看数据库支持的字符集(3)查看数据库支持的字符集校验规则(4)校验…