news 2026/7/16 20:19:15

搜索引擎:Meilisearch、Cellulite、LMDB、Tantivy、Quickwit

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
搜索引擎:Meilisearch、Cellulite、LMDB、Tantivy、Quickwit

Meilisearch

官网,闪电般快速的开源(GitHub,58.6K Star,2.6K Fork)搜索引擎,专为现代应用设计。提供开箱即用的功能,能够在不到50毫秒内返回搜索结果,支持混合搜索(结合语义搜索和全文搜索)、拼写容错、多语言支持、地理搜索等高级特性。

功能

  • 混合搜索:结合语义搜索和全文搜索的优势,提供最相关的搜索结果,支持向量搜索和传统关键词搜索
  • 混合向量检索:支持文本、图片多模态向量存储,可直接对接LLM搭建本地知识库RAG系统
  • 即时搜索:内置优化倒排索引与内存映射存储,在不到50毫秒内返回结果,提供流畅的边输入边搜索体验
  • 拼写容错:自动识别错别字、拼音近似词
  • 分词:原生适配中文,无需手动安装分词插件
  • 过滤与分面搜索:通过自定义过滤器增强搜索体验,几行代码即可构建分面搜索界面
  • 排序功能:内置相关性排序算法,默认返回高质量结果,可自定义字段权重。如基于价格、日期或任何自定义字段对结果进行排序
  • 实用业务检索能力:分面筛选、地理范围搜索、自定义过滤、批量文档增删、异步索引更新;
  • 同义词支持:配置同义词以包含更多相关内容
  • 地理搜索:基于地理位置数据过滤和排序文档
  • 多语言支持:支持任何语言的数据集搜索,对中文、日文、希伯来语和拉丁字母语言进行优化
  • 安全管理:通过API密钥控制用户访问权限,支持细粒度权限管理
  • 多租户支持:为任意数量的应用租户个性化搜索结果
  • RESTful API:通过插件和SDK轻松集成到技术栈中
  • AI就绪:开箱即用支持LangChain和MCP
  • 轻量化运维配套:内置简易管理面板、API密钥权限隔离、自动持久化存储,支持定时快照备份。

亮点

  • 极致性能:基于Rust构建,提供闪电般的搜索速度。搜索响应时间通常在50毫秒以内,即使在大规模数据集上也能保持高性能。支持实时索引更新,无需重建整个索引。
  • Rust内存安全架构:无GC、无内存泄漏,核心检索模块拆分为独立Crate,milli引擎单独封装索引逻辑,分层清晰便于二次开发;
  • 混合搜索架构将语义搜索(理解查询意图)和全文搜索(精确匹配关键词)完美结合,提供比单一搜索方式更准确的结果。支持向量嵌入和传统倒排索引的混合查询。
  • 开箱即用的智能特性:拼写容错、同义词识别、停用词处理等功能无需配置即可使用。智能排序算法自动优化搜索结果的相关性,提供类似Google的搜索体验。
  • 企业级功能:提供社区版(CE)和企业版(EE)。企业版包含分片(Sharding)、S3流式快照等高级功能,适合大规模部署。支持多租户架构,可为不同用户提供个性化搜索结果。
  • 生态系统丰富:提供多语言SDK(JavaScript、Python、Ruby、Go、Rust、PHP、Java、.NET、Swift等),以及与React、Vue、Angular、Rails、Laravel、Django等主流框架的集成工具。支持Docker、Kubernetes等容器化部署。
  • MDBX嵌入式存储:摒弃重型数据库,采用轻量化键值库,读写性能优异,断电数据不损坏;
  • 模块化检索引擎:关键词检索、向量检索、分词器、过滤器完全解耦,可按需替换分词模型、向量嵌入器;
  • 极简API设计:屏蔽底层索引复杂逻辑,接口参数少、学习成本极低,新手半小时完成接入;

适用场景:电商商品检索、博客/文档站全文搜索、企业内部知识库、本地AI向量数据库、SaaS多租户检索、开源项目文档检索。

实战

部署方式:

  • GitHub Release页面下载
  • Docker
  • 命令行
  • Meilisearch Cloud:官方托管服务
# 基于Dockerdockerrun-d\--namemeilisearch\--restartalways\-p7700:7700\-v/data/meili:/meili_data\-eMASTER_KEY=<自定义高强度密钥>\getmeili/meilisearch:latest# Macbrewinstallmeilisearchaptinstallmeilisearch meilisearch --master-key="MASTER_KEY"# 创建索引并添加文档curl-XPOST'http://localhost:7700/indexes/movies/documents'\-H'Content-Type: application/json'\--data-binary'[ {"id": 1, "title": "The Matrix", "genre": "Sci-Fi"} ]'# 搜索curl'http://localhost:7700/indexes/movies/search?q=matrix'

Cellulite

官网,用Rust编写、Meilisearch官方基于LMDB的开源(GitHub)嵌入式地理空间数据库存储引擎。官方文档

功能:

  • 存储GeoJSON格式的地理形状(点、线、面)
  • 快速查找“某个区域内有哪些地标”
  • 支持多边形和近似圆形搜索
  • 写入后自动构建立体空间索引
  • 查询延迟低至毫秒级,百万级数据毫无压力

示例
.in_shape()方法接受多边形传参,就能找出所有落在该区域内部或相交的地理对象ID;适用于:地图选区查询、行政区划筛选、物流配送范围判断。

letdoc_ids=cellulite.in_shape(&rtxn,&polygon![(x:-111.,y:45.),(x:-111.,y:41.),(x:-104.,y:41.),(x:-104.,y:45.),]).unwrap();

.in_circle()用多边形逼近圆,精度越高越像圆,但计算越慢。15是个不错的平衡值,误差小到可忽略。适用场景:搜索附近3公里的奶茶店、5km内的充电桩。

letdoc_ids=cellulite.in_circle(&rtxn,point!{x:181.2,y:51.79},1000.0,// 半径(米)15// 精度:用15个点逼近圆).unwrap();

LMDB

Lightning Memory-Mapped Database简称,以超高速、低延迟、内存映射著称的开源(GitHub,2.9K Star,624 Fork)嵌入式KV数据库。

优势:

  • 零拷贝读取
  • 多进程安全
  • ACID事务支持
  • 极致压缩与空间利用率

Tantivy

与Elasticsearch或Solr不同,并不是一个即用型的搜索引擎服务器,而是一个可用于构建搜索引擎的Rust crate;即提供一个构建自定义搜索引擎的开源(GitHub,14.8K Star,888 Fork)框架,而不是一个完全现成的解决方案。

Tantivy的设计灵感来源于Lucene,更侧重于为开发者提供高效、灵活的构建模块。更适合那些需要快速实现特定搜索功能并进行高度定制的用户。提供必要的核心功能,如倒排索引、查询解析器等,但需要开发者自己去实现如何部署和维护搜索服务。

功能:

  • 全文搜索支持:可进行复杂的全文检索,包括布尔查询和短语查询等;
  • 配置化的分词器:支持多达17种拉丁语语言的词干提取,还支持中文、日文和韩文的分词器(如tantivy-jiebalindera等);
  • 快速响应时间:启动时间非常短,通常小于10毫秒,非常适合用作命令行工具;
  • BM25评分:支持基于BM25算法进行文档评分;
  • 增量索引:可支持对现有索引进行增量更新,避免完全重建索引;
  • 多线程索引:支持多线程并行索引,能在短时间内完成大规模文档的索引(如英文维基百科的索引只需要不到3分钟);
  • Mmap目录:支持内存映射目录,提升索引和查询性能;
  • 高效的压缩算法:支持LZ4、Zstd等压缩方式,帮助减少存储空间和提高数据传输效率;
  • 范围查询和分面搜索:能够进行多维度的数据查询分析,如日期范围查询或地理位置查询;
  • 文档存储和字段类型支持:支持文本、整型、浮动点数、布尔值等多种字段类型,同时还可以进行文档压缩存储。

适用场景:

  • 构建自定义的全文搜索引擎,支持各种查询方式;
  • 实现增量索引和快速文档搜索,满足高效的数据检索需求;
  • 需要支持快速响应时间和大规模数据的索引处理。

Benchmark

Tantivy提供一个基准测试,可帮助用户理解其在不同查询类型和数据集合上的性能。尽管如此,性能表现会受到查询类型、数据量和硬件环境的影响。因此,用户在使用时可能会经历不同的性能结果。

安装

安装最新版本的Rust,通过cargo安装并构建Tantivy。

创建索引和查询:使用tantivy-cli创建一个简单的搜索引擎。你可以通过命令行工具或小型REST API进行索引和查询操作。

Tantivy使用的是不可变的数据结构,因此文档编辑时需要先删除原文档,然后重新索引。

文档在提交给IndexWriter并调用提交后变为可搜索,现有IndexReader需要重新加载才能反映这些变更。

Quickwit

官网,基于Rust+Tantivy,在对象存储上跑亚秒级全文搜索的开源(GitHub,11K Star,537 Fork)分布式引擎,计算存储完全分离,专为PB级日志和事件数据设计。官方文档。


Elasticsearch是"计算和存储绑定"的架构——数据存在本地磁盘,扩容要搬数据,缩容要迁分片,运维成本随数据量指数上升。

Quickwit,数据存储于S3/MinIO等对象存储,计算节点无状态:

  • 存储成本断崖式下降:S3的价格是EBS的1/10,PB级数据存得起
  • 弹性伸缩无感:加减计算节点不需要移动任何数据,秒级完成
  • 索引和搜索独立扩展:写入高峰加索引节点,查询高峰加搜索节点,互不干扰
  • 多租户隔离天然友好:数据在对象存储里天然隔离,按用量计费轻而易举

适用场景:

  • 日志管理:海量日志长期存储+低频查询,正是对象存储搜索的最佳场景
  • 分布式追踪:原生支持OpenTelemetry,链路数据直接灌进来
  • 不可变事件数据:聊天记录、邮件归档、审计日志,写入后不修改的数据
  • 基于事件的分析:安全日志关联分析、行为事件回溯

不适用场景:需要毫秒级实时搜索的在线业务、频繁更新文档。

架构

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 20:17:43

如何快速上手ComfyUI-SixGod_Prompt:10分钟完成安装与基础配置指南

如何快速上手ComfyUI-SixGod_Prompt&#xff1a;10分钟完成安装与基础配置指南 【免费下载链接】comfyui-sixgod_prompt 项目地址: https://gitcode.com/gh_mirrors/co/comfyui-sixgod_prompt 对于使用ComfyUI进行AI绘画的用户来说&#xff0c;英文提示词一直是困扰中文…

作者头像 李华
网站建设 2026/7/16 20:14:54

解决Next LS常见问题:开发者必看的故障排除指南

解决Next LS常见问题&#xff1a;开发者必看的故障排除指南 【免费下载链接】next-ls The language server for Elixir that just works. 项目地址: https://gitcode.com/gh_mirrors/ne/next-ls Next LS是专为Elixir语言设计的语言服务器&#xff0c;为开发者提供智能代…

作者头像 李华