MeiliSearch:一款轻量级开源搜索引擎

Meilisearch 是由 Meili (一家总部位于法国的软件开发公司)创建的搜索引擎,目前在 Github 上有 47.9k stars。

Meillisearch 具备以下特色功能(ChatGPT-4o 翻译):

  1. 混合搜索:结合语义搜索和全文搜索的优点,获取最相关的结果
  2. 即时搜索:在不到50毫秒的时间内找到并显示结果,以提供直观的体验
  3. 容错:即使查询中包含错别字和拼写错误,也能获得相关匹配结果
  4. 过滤和分面搜索:通过自定义过滤器增强用户的搜索体验,并用几行代码构建分面搜索界面
  5. 排序:根据价格、日期或其他用户需求排序结果
  6. 同义词支持:配置同义词以在搜索结果中包含更多相关内容
  7. 地理搜索:基于地理数据过滤和排序文档
  8. 广泛的语言支持:支持任何语言的数据集搜索,特别优化了中文、日文、希伯来文和使用拉丁字母的语
  9. 安全管理:通过允许细粒度权限处理的 API 密钥控制用户的数据访问
  10. 多租户:为任意数量的应用程序租户个性化搜索结果
  11. 高度可定制:可以根据特定需求定制 Meilisearch,或使用Meillisearch开箱即用的无忧预设
  12. RESTful API:可以基于提供的插件和 SDK 将 Meilisearch 集成到技术栈中
  13. 易于安装、部署和维护

如何部署?

两种方式,本地部署或者使用 Meilisearch Cloud,本篇博客的后续内容将简单介绍一下如何本地部署Meillisearch。

操作系统:Ubuntu 22.04.4 LTS

安装命令:

# Install Meilisearch
curl -L https://install.meilisearch.com | sh

执行完命令后的输出如下

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100   167  100   167    0     0    227      0 --:--:-- --:--:-- --:--:--   226
100  4352  100  4352    0     0   2745      0  0:00:01  0:00:01 --:--:-- 4250k
Downloading Meilisearch binary v1.11.3 for linux, architecture amd64...% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100  115M  100  115M    0     0  1941k      0  0:01:01  0:01:01 --:--:-- 2174k
Meilisearch v1.11.3 binary successfully downloaded as 'meilisearch' file.Run it:$ ./meilisearch
Usage:$ ./meilisearch --help

如何运行?

启动 Meilisearch应用,可以配置 master-key 让Meilisearch的运行更安全。

设置主密钥在开发环境中是可选的,但强烈建议进行配置。在生产环境中,主密钥是必需的。

主密钥可以改为任何长度大于等于 16 的字母数字组合形成的字符串。

# Launch Meilisearch
./meilisearch --master-key="aSampleMasterKey"

正常启动后终端输出(默认运行在7700端口):

888b     d888          d8b 888 d8b                                            888
8888b   d8888          Y8P 888 Y8P                                            888
88888b.d88888              888                                                888
888Y88888P888  .d88b.  888 888 888 .d8888b   .d88b.   8888b.  888d888 .d8888b 88888b.
888 Y888P 888 d8P  Y8b 888 888 888 88K      d8P  Y8b     "88b 888P"  d88P"    888 "88b
888  Y8P  888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888    888      888  888
888   "   888 Y8b.     888 888 888      X88 Y8b.     888  888 888    Y88b.    888  888
888       888  "Y8888  888 888 888  88888P'  "Y8888  "Y888888 888     "Y8888P 888  888Config file path:       "none"
Database path:          "./data.ms"
Server listening on:    "http://localhost:7700"
Environment:            "development"
Commit SHA:             "unknown"
Commit date:            "unknown"
Package version:        "1.11.3"Thank you for using Meilisearch!We collect anonymized analytics to improve our product and your experience. To learn more, including how to turn off analytics, visit our dedicated documentation page: https://www.meilisearch.com/docs/learn/what_is_meilisearch/telemetryAnonymous telemetry:    "Enabled"
Instance UID:           "2e3c3aae-3fc3-458c-a610-3aaf910f86a4"A master key has been set. Requests to Meilisearch won't be authorized unless you provide an authentication key.Check out Meilisearch Cloud!    https://www.meilisearch.com/cloud?utm_campaign=oss&utm_source=engine&utm_medium=cli
Documentation:                  https://www.meilisearch.com/docs
Source code:                    https://github.com/meilisearch/meilisearch
Discord:                        https://discord.meilisearch.com2024-12-13T09:18:37.941118Z  INFO actix_server::builder: starting 32 workers
2024-12-13T09:18:37.941200Z  INFO actix_server::server: Actix runtime found; starting in Actix runtime

如何使用?

  1. 将官方提供的 movies.json文件上传到安装部署 Meilisearch 的同一目录下,然后执行以下命令:
curl \-X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=id' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer aSampleMasterKey' \--data-binary @movies.json

movies.json 中某一条数据示例:

{"id": 2,"title": "Ariel","overview": "Taisto Kasurinen is a Finnish coal miner whose father has just committed suicide and who is framed for a crime he did not commit. In jail, he starts to dream about leaving the country and starting a new life. He escapes from prison but things don't go as planned...","genres": ["Drama","Crime","Comedy"],"poster": "https://image.tmdb.org/t/p/w500/ojDg0PGvs6R9xYFodRct2kdI6wC.jpg","release_date": 593395200
}

Meilisearch 以离散记录的形式存储数据,这些记录称为文档。每个文档是由多个字段组成的对象,每个字段由一个属性和值对构构成。文档被分组到集合中,这些集合称为索引。先前执行的 curl 命令将 movies.json 中的文档添加到了一个名为 movies 的新索引中,并将 id 设置为主键。

终端输出结果:

{"taskUid": 1,"indexUid": "movies","status": "enqueued","type": "documentAdditionOrUpdate","enqueuedAt": "2024-12-13T09:39:50.659976613Z"
}
  1. 对建立的名为 movies 的索引进行检索

执行如下命令:

curl \-X POST 'http://localhost:7700/indexes/movies/search' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer aSampleMasterKey' \--data-binary '{ "q": "botman" }'

参数 q 代表query,默认情况下,Meilisearch 仅返回搜索查询的前 20 个结果(可以使用 limit 参数更改此设置)。

检索 botman 相关电影信息并返回一条检索结果:

curl \-X POST 'http://localhost:7700/indexes/movies/search' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer aSampleMasterKey' \--data-binary '{ "q": "botman", "limit": 1}'

执行命令后终端输出的检索结果如下:

{"hits": [{"id": 155,"title": "The Dark Knight","overview": "Batman raises the stakes in his war on crime. With the help of Lt. Jim Gordon and District Attorney Harvey Dent, Batman sets out to dismantle the remaining criminal organizations that plague the streets. The partnership proves to be effective, but they soon find themselves prey to a reign of chaos unleashed by a rising criminal mastermind known to the terrified citizens of Gotham as the Joker.","genres": ["Drama","Action","Crime","Thriller"],"poster": "https://image.tmdb.org/t/p/w500/qJ2tW6WMUDux911r6m7haRef0WH.jpg","release_date": 1216166400}],"query": "botman","processingTimeMs": 0,"limit": 1,"offset": 0,"estimatedTotalHits": 70
}

更多Meillisearch相关使用请前往 官方文档 或关注后续博客内容。

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

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

相关文章

随手记——conda迁移虚拟环境后不能使用Linux命令解决方案

在Ubuntu使用conda pack打包环境迁移之后发现存在以下问题; conda迁移环境是为了更短的的在新机器上搭建一个环境;我记录一下遇见的问题; 步骤: 【默认安装了conda-pack库,我都是安装到base虚拟环境中,打…

MongoDB-ObjectID 生成器

前言 MongoDB中一个非常关键的概念就是 ObjectID,它是 MongoDB 中每个文档的默认唯一标识符。了解 ObjectID 的生成机制不仅有助于开发人员优化数据库性能,还能帮助更好地理解 MongoDB 的设计理念。 什么是 MongoDB ObjectID? 在 MongoDB …

发愿和许愿的区别是什么?

在许多宗教和文化中,发愿和许愿都是人们表达内心愿望、祈求神灵保佑的重要方式。尽管这两个词在日常生活中经常被交替使用,但它们在含义和实践上存在一些重要的区别。本文就来详细说说发愿和许愿的区别,并提供相关的背景信息和建议。 1. 定义…

渗透测试工具 -- SQLmap安装教程及使用

随着网络安全问题日益严峻,渗透测试成为了保护信息安全的重要手段。而在渗透测试的众多工具中,SQLmap凭借其强大的自动化SQL注入检测和利用能力,成为了网络安全专家必备的利器。那么,你知道如何高效地使用SQLmap进行漏洞扫描吗&am…

SpringBoot 整合 RabbitMQ 实现流量消峰

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还…

Git-分支(branch)常用命令

分支 我们在做项目开发的时候,无论是软件项目还是其他机械工程项目,我们为了提高效率以及合理的节省时间等等原因,现在都不再是线性进行,而是将一个项目抽离出诸进行线,每一条线在git中我们就叫做分支,bran…

goenv go 环境配置

Golang环境配置 1. goenv工具 goenv 是一个用于管理 Go 语言版本的工具,类似于 Python 的 pyenv 或 Ruby 的 rbenv。不过需要注意的是,goenv 并不是一个官方维护的工具,而是一个社区项目。Go 语言本身已经提供了很好的版本管理工具&#xf…

Electron electron-builder.yml 配置 (自定义包名,用户自定义安装目录...)

electron-builder.yml 配置 # 唯一的应用程序标识符,用于操作系统级别的识别 appId: com.electron.app# 应用程序的名称,显示在用户界面上 productName: 我的应用# 定义构建资源目录,放置图标、证书等资源文件 directories:buildResources: …

springboot425滑雪场管理系统(论文+源码)_kaic

摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定滑雪场管理系统的总体功能模块。然后,详…

好玩的汇编编译器NASM:一款基于x86架构的汇编与反汇编软件

好玩的汇编编译器NASM This is the project webpage for the Netwide Assembler (NASM), an asssembler for the x86 CPU architecture portable to nearly every modern platform, and with code generation for many platforms old and new. Netwide Assembler(…

前端面试准备问题2

1.防抖和节流分别是什么,应用场景 防抖:在事件被触发后,只有在指定的延迟时间内没有再次触发,才执行事件处理函数。 在我的理解中,简单的说就是在一个指定的时间内,仅触发一次,如果有多次重复触…

Java 的基本数据类型与包装类的区别

Java 提供了 8 种基本数据类型:byte、short、int、long、float、double、char 和 boolean。它们是直接存储值的,不是对象。 而包装类(如 Integer、Double 等)是将基本数据类型封装为对象,提供了更多方法支持&#xff…

RabbitMQ 基本使用方法详解

RabbitMQ 基本使用方法 在你的代码中,涉及到了 RabbitMQ 的基本使用,包括队列定义、交换机的配置、消息的发送与接收等内容。下面我将详细总结 RabbitMQ 的基本使用方法,重点解释如何在 Spring Boot 项目中与 RabbitMQ 集成。 1. 引入依赖 …

【AI知识】有监督学习分类任务之支持向量机

1.支持向量机概念 支持向量机(Support Vector Machine, SVM) 是一种有监督学习算法,主要用于分类任务(也可用于回归任务,即支持向量回归,SVR)。SVM的核心思想是找到一个最优的超平面&#xff0…

杭州乘云联合信通院发布《云计算智能化可观测性能力成熟度模型》

原文地址:杭州乘云联合中国信通院等单位正式发布《云计算智能化可观测性能力成熟度模型》标准 2024年12月3日,由全球数字经济大会组委会主办、中国信通院承办的 2024全球数字经济大会 云AI计算创新发展大会(2024 Cloud AI Compute Ignite&…

【经典】制造供应链四类策略(MTS、MTO、ATO、ETO)细说

关注作者 制造供应链的牛鞭问题与复杂问题主要是从两个方面解决,一是同步化供应链消减从需求到供应的放大效应,二是供应链细分,针对不同的客户、不同的需求供应的匹配策略来应对复杂性,更好的满足客户并以最低的总成本来实现。 对…

实时日志与发展:Elasticsearch 推出全新专用的 logsdb 索引模式

作者:来自 Elastic Mark Settle, George Kobar 及 Amena Siddiqi Elastic 最新发布的 logsdb 索引模式是专为日志管理优化的功能,旨在提升日志数据的存储效率、查询性能以及整体可用性。这个模式专注于满足现代日志处理需求,提供更高效的日志…

React Image Crop——在React应用中轻松实现图片裁剪功能

React Image Crop是一个用于在React应用程序中裁剪和调整图像的库。它提供了一个简单而强大的界面,允许用户选择和调整裁剪区域,并生成裁剪后的图像。 什么是React Image Crop? React Image Crop是一个开源的React组件,用于在浏览…

Vue.js 中,前端如何处理从后端返回的 Excel 文件流

目的:页面中点击按钮实现下载excel文件 步骤: 向后端发送请求: 使用 axios(或其他 HTTP 客户端)向后端发送请求以获取文件。通常,文件会以 Blob 形式返回。 处理响应数据: 将响应数据(Blob 对象)处理为下载链接,并模拟点击以触发下载。 具体步骤: 1. 安装 axios(…

【HarmonyOS】鸿蒙应用实现手机摇一摇功能

【HarmonyOS】鸿蒙应用实现手机摇一摇功能 一、前言 手机摇一摇功能,是通过获取手机设备,加速度传感器接口,获取其中的数值,进行逻辑判断实现的功能。 在鸿蒙中手机设备传感器ohos.sensor (传感器)的系统API监听有以下&#xf…