[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-meilisearch--meilisearch":3,"tool-meilisearch--meilisearch":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":67,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":79,"owner_twitter":67,"owner_website":80,"owner_url":81,"languages":82,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":23,"env_os":99,"env_gpu":100,"env_ram":100,"env_deps":101,"category_tags":104,"github_topics":105,"view_count":126,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":127,"updated_at":128,"faqs":129,"releases":158},193,"meilisearch\u002Fmeilisearch","meilisearch","A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.","Meilisearch 是一个开源的极速搜索服务，专为现代应用和网站打造，开箱即用。它能帮助开发者快速集成高质量的搜索功能，无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果，而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性，并支持 AI 驱动的混合搜索（结合关键词与语义理解），显著提升用户查找信息的体验。\n\nMeilisearch 特别适合 Web 开发者、产品团队或初创公司使用，尤其适用于需要快速上线搜索功能的场景，如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK，部署简单，资源占用低，本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下，为用户提供流畅、智能搜索体验的团队来说，Meilisearch 是一个高效且友好的选择。","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=logo#gh-light-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"assets\u002Fmeilisearch-logo-light.svg?sanitize=true#gh-light-mode-only\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=logo#gh-dark-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"assets\u002Fmeilisearch-logo-dark.svg?sanitize=true#gh-dark-mode-only\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Ch4 align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Website\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Froadmap.meilisearch.com\u002Ftabs\u002F1-under-consideration\">Roadmap\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002Fpricing?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Meilisearch Cloud\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fblog.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Blog\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002Fdocs?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Documentation\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Ffaq?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">FAQ\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fdiscord.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Discord\u003C\u002Fa>\n\u003C\u002Fh4>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fdeps.rs\u002Frepo\u002Fgithub\u002Fmeilisearch\u002Fmeilisearch\">\u003Cimg src=\"https:\u002F\u002Fdeps.rs\u002Frepo\u002Fgithub\u002Fmeilisearch\u002Fmeilisearch\u002Fstatus.svg\" alt=\"Dependency status\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-informational\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fqueue\">\u003Cimg alt=\"Merge Queues enabled\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMerge_Queues-enabled-%2357cf60?logo=github\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">⚡ A lightning-fast search engine that fits effortlessly into your apps, websites, and workflow 🔍\u003C\u002Fp>\n\n[Meilisearch](https:\u002F\u002Fwww.meilisearch.com?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=intro) helps you shape a delightful search experience in a snap, offering features that work out of the box to speed up your workflow.\n\n\u003Cp align=\"center\" name=\"demo\">\n  \u003Ca href=\"https:\u002F\u002Fwhere2watch.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demo-gif#gh-light-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_readme_ff6f0e75bdce.png\" alt=\"A bright colored application for finding movies screening near the user\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwhere2watch.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demo-gif#gh-dark-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_readme_1698f3cb780f.png\" alt=\"A dark colored application for finding movies screening near the user\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n## 🖥 Examples\n\n- [**Movies**](https:\u002F\u002Fwhere2watch.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=organization) — An application to help you find streaming platforms to watch movies using [hybrid search](https:\u002F\u002Fwww.meilisearch.com\u002Fsolutions\u002Fhybrid-search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos).\n- [**Flickr**](https:\u002F\u002Fflickr.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=organization) — Search and explore one hundred million Flickr images with semantic search.\n- [**Ecommerce**](https:\u002F\u002Fecommerce.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) — Ecommerce website using disjunctive [facets](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffaceted_search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos), range and rating filtering, and pagination.\n- [**Songs**](https:\u002F\u002Fmusic.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) — Search through 47 million of songs.\n- [**SaaS**](https:\u002F\u002Fsaas.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) — Search for contacts, deals, and companies in this [multi-tenant](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmultitenancy_tenant_tokens?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) CRM application.\n\nSee the list of all our example apps in our [demos repository](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fdemos).\n\n## ✨ Features\n- **Hybrid search:** Combine the best of both [semantic](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fexperimental\u002Fvector_search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features) & full-text search to get the most relevant results\n- **Search-as-you-type:** Find & display results in less than 50 milliseconds to provide an intuitive experience\n- **[Typo tolerance](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Frelevancy\u002Ftypo_tolerance_settings?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** get relevant matches even when queries contain typos and misspellings\n- **[Filtering](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffiltering?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features) and [faceted search](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffaceted_search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** enhance your users' search experience with custom filters and build a faceted search interface in a few lines of code\n- **[Sorting](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fsorting?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** sort results based on price, date, or pretty much anything else your users need\n- **[Synonym support](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Frelevancy\u002Fsynonyms?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** configure synonyms to include more relevant content in your search results\n- **[Geosearch](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fgeosearch?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** filter and sort documents based on geographic data\n- **[Extensive language support](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Flanguage?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** search datasets in any language, with optimized support for Chinese, Japanese, Hebrew, and languages using the Latin alphabet\n- **[Security management](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmaster_api_keys?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** control which users can access what data with API keys that allow fine-grained permissions handling\n- **[Multi-Tenancy](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmultitenancy_tenant_tokens?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** personalize search results for any number of application tenants\n- **Highly Customizable:** customize Meilisearch to your specific needs or use our out-of-the-box and hassle-free presets\n- **[RESTful API](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Freference\u002Fapi\u002Foverview?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features):** integrate Meilisearch in your technical stack with our plugins and SDKs\n- **AI-ready:** works out of the box with [LangChain](https:\u002F\u002Fwww.meilisearch.com\u002Fwith\u002FLangChain) and the [Model Context Protocol (MCP)](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch-mcp)\n- **Easy to install, deploy, and maintain**\n\n## 📖 Documentation\n\nYou can consult Meilisearch's documentation at [meilisearch.com\u002Fdocs](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=docs).\n\n## 🚀 Getting started\n\nFor basic instructions on how to set up Meilisearch, add documents to an index, and search for documents, take a look at our [documentation](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=get-started) guide.\n\n## 🌍 Supercharge your Meilisearch experience\n\nSay goodbye to server deployment and manual updates with [Meilisearch Cloud](https:\u002F\u002Fwww.meilisearch.com\u002Fcloud?utm_campaign=oss&utm_source=github&utm_medium=meilisearch). Additional features include analytics & monitoring in many regions around the world. No credit card is required.\n\n## 🧰 SDKs & integration tools\n\nInstall one of our SDKs in your project for seamless integration between Meilisearch and your favorite language or framework!\n\nTake a look at the complete [Meilisearch integration list](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Fsdks?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=sdks-link).\n\n[![Logos belonging to different languages and frameworks supported by Meilisearch, including React, Ruby on Rails, Go, Rust, and PHP](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_readme_645bdf5cc0af.png)](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Fsdks?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=sdks-logos)\n\n## ⚙️ Advanced usage\n\nExperienced users will want to keep our [API Reference](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Freference\u002Fapi\u002Foverview?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced) close at hand.\n\nWe also offer a wide range of dedicated guides to all Meilisearch features, such as [filtering](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffiltering?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced), [sorting](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fsorting?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced), [geosearch](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fgeosearch?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced), [API keys](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmaster_api_keys?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced), and [tenant tokens](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Ftenant_tokens?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced).\n\nFinally, for more in-depth information, refer to our articles explaining fundamental Meilisearch concepts such as [documents](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fcore_concepts\u002Fdocuments?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced) and [indexes](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fcore_concepts\u002Findexes?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced).\n\n## 🧾 Editions & Licensing\n\nMeilisearch is available in two editions:\n\n### 🧪 Community Edition (CE)\n\n- Fully open source under the [MIT license](.\u002FLICENSE)\n- Core search engine with fast and relevant full-text, semantic or hybrid search\n- Free to use for anyone, including commercial usage\n\n### 🏢 Enterprise Edition (EE)\n\n- Includes advanced features such as:\n  - Sharding\n  - S3-streaming snapshots\n- Governed by a [commercial license](.\u002FLICENSE-EE) or the [Business Source License 1.1](https:\u002F\u002Fmariadb.com\u002Fbsl11)\n- Not allowed in production without a commercial agreement with Meilisearch.\n  - You may use, modify, and distribute the Licensed Work for non-production purposes only, such as testing, development, or evaluation.\n\nWant access to Enterprise features? → Contact us at [sales@meilisearch.com](maito:sales@meilisearch.com).\n\n### 📦 External crates\n\nMeilisearch vendors the following MIT-licensed external crates with code modifications to use the HTTP client located in `crates\u002Fhttp-clients`:\n\n- `external-crates\u002Fasync-openai` and `external-crates\u002Fasync-openai-macros` from \u003Chttps:\u002F\u002Fgithub.com\u002F64bit\u002Fasync-openai>\n- `external-crates\u002Freqwest-eventsource` from \u003Chttps:\u002F\u002Fgithub.com\u002Fjpopesculian\u002Freqwest-eventsource>\n\n## 📊 Telemetry\n\nMeilisearch collects **anonymized** user data to help us improve our product. You can [deactivate this](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Ftelemetry?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=telemetry#how-to-disable-data-collection) whenever you want.\n\nTo request deletion of collected data, please write to us at [privacy@meilisearch.com](mailto:privacy@meilisearch.com). Remember to include your `Instance UID` in the message, as this helps us quickly find and delete your data.\n\nIf you want to know more about the kind of data we collect and what we use it for, check the [telemetry section](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Ftelemetry?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=telemetry#how-to-disable-data-collection) of our documentation.\n\n## 📫 Get in touch!\n\nMeilisearch is a search engine created by [Meili](https:\u002F\u002Fwww.meilisearch.com\u002Fcareers), a software development company headquartered in France and with team members all over the world. Want to know more about us? [Check out our blog!](https:\u002F\u002Fblog.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=contact)\n\n🗞 [Subscribe to our newsletter](https:\u002F\u002Fshare-eu1.hsforms.com\u002F1LN5N0x_GQgq7ss7tXmSykwfg3aq) if you don't want to miss any updates! We promise we won't clutter your mailbox: we only send one edition every two months.\n\n💌 Want to make a suggestion or give feedback? Here are some of the channels where you can reach us:\n\n- For feature requests, please visit our [product repository](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fproduct\u002Fdiscussions)\n- Found a bug? Open an [issue](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fissues)!\n- Want to be part of our Discord community? [Join us!](https:\u002F\u002Fdiscord.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=contact)\n\nThank you for your support!\n\n## 👩‍💻 Contributing\n\nMeilisearch is, and will always be, open-source! If you want to contribute to the project, please look at [our contribution guidelines](CONTRIBUTING.md).\n\n## 📦 Versioning\n\nMeilisearch releases and their associated binaries are available on the project's [releases page](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Freleases).\n\nThe binaries are versioned following [SemVer conventions](https:\u002F\u002Fsemver.org\u002F). To know more, read our [versioning policy](.\u002Fdocumentation\u002Fversioning-policy.md).\n\nDifferently from the binaries, crates in this repository are not currently available on [crates.io](https:\u002F\u002Fcrates.io\u002F) and do not follow [SemVer conventions](https:\u002F\u002Fsemver.org).\n","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=logo#gh-light-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"assets\u002Fmeilisearch-logo-light.svg?sanitize=true#gh-light-mode-only\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=logo#gh-dark-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"assets\u002Fmeilisearch-logo-dark.svg?sanitize=true#gh-dark-mode-only\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Ch4 align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">网站\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Froadmap.meilisearch.com\u002Ftabs\u002F1-under-consideration\">路线图\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002Fpricing?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Meilisearch Cloud\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fblog.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">博客\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002Fdocs?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">文档\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Ffaq?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">常见问题\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fdiscord.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=nav\">Discord\u003C\u002Fa>\n\u003C\u002Fh4>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fdeps.rs\u002Frepo\u002Fgithub\u002Fmeilisearch\u002Fmeilisearch\">\u003Cimg src=\"https:\u002F\u002Fdeps.rs\u002Frepo\u002Fgithub\u002Fmeilisearch\u002Fmeilisearch\u002Fstatus.svg\" alt=\"依赖状态\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-informational\" alt=\"许可证\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fqueue\">\u003Cimg alt=\"已启用合并队列\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMerge_Queues-enabled-%2357cf60?logo=github\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">⚡ 一款极速搜索（search engine）引擎，可轻松集成到你的应用、网站和工作流中 🔍\u003C\u002Fp>\n\n[Meilisearch](https:\u002F\u002Fwww.meilisearch.com?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=intro) 能帮你快速打造出色的搜索体验，提供开箱即用的功能，加速你的开发流程。\n\n\u003Cp align=\"center\" name=\"demo\">\n  \u003Ca href=\"https:\u002F\u002Fwhere2watch.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demo-gif#gh-light-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_readme_ff6f0e75bdce.png\" alt=\"一个亮色主题的应用程序，用于查找用户附近正在上映的电影\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwhere2watch.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demo-gif#gh-dark-mode-only\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_readme_1698f3cb780f.png\" alt=\"一个暗色主题的应用程序，用于查找用户附近正在上映的电影\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n## 🖥 示例\n\n- [**Movies（电影）**](https:\u002F\u002Fwhere2watch.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=organization) — 使用[混合搜索（hybrid search）](https:\u002F\u002Fwww.meilisearch.com\u002Fsolutions\u002Fhybrid-search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos)帮助你查找可在哪些流媒体平台观看电影的应用。\n- [**Flickr**](https:\u002F\u002Fflickr.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=organization) — 利用语义搜索（semantic search）浏览一亿张 Flickr 图片。\n- [**Ecommerce（电商）**](https:\u002F\u002Fecommerce.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) — 电商网站示例，使用析取式[分面（facets）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffaceted_search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos)、范围与评分过滤以及分页功能。\n- [**Songs（歌曲）**](https:\u002F\u002Fmusic.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) — 搜索四千七百万首歌曲。\n- [**SaaS**](https:\u002F\u002Fsaas.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) — 在这个[多租户（multi-tenant）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmultitenancy_tenant_tokens?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=demos) CRM 应用中搜索联系人、交易和公司信息。\n\n查看我们所有示例应用的完整列表，请访问我们的 [demos 仓库](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fdemos)。\n\n## ✨ 功能特性\n- **混合搜索（Hybrid search）**：结合[语义搜索](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fexperimental\u002Fvector_search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)与全文搜索的优势，获得最相关的结果\n- **即时搜索（Search-as-you-type）**：在不到 50 毫秒内查找并显示结果，提供直观流畅的用户体验\n- **[容错能力（Typo tolerance）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Frelevancy\u002Ftypo_tolerance_settings?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：即使查询中包含拼写错误或错别字，也能返回相关匹配结果\n- **[过滤（Filtering）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffiltering?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)与[分面搜索（Faceted search）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffaceted_search?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：通过自定义过滤器提升用户搜索体验，并用几行代码即可构建分面搜索界面\n- **[排序（Sorting）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fsorting?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：根据价格、日期或用户所需的任意字段对结果进行排序\n- **[同义词支持（Synonym support）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Frelevancy\u002Fsynonyms?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：配置同义词以在搜索结果中包含更多相关内容\n- **[地理搜索（Geosearch）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fgeosearch?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：基于地理位置数据对文档进行过滤和排序\n- **[广泛的语言支持（Extensive language support）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Flanguage?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：支持任意语言的数据集搜索，并针对中文、日文、希伯来语及使用拉丁字母的语言进行了优化\n- **[安全管理（Security management）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmaster_api_keys?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：通过 API 密钥实现细粒度权限控制，决定哪些用户可以访问哪些数据\n- **[多租户（Multi-Tenancy）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmultitenancy_tenant_tokens?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：为任意数量的应用租户个性化搜索结果\n- **高度可定制**：可根据具体需求自定义 Meilisearch，也可直接使用我们开箱即用、无需配置的预设方案\n- **[RESTful API](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Freference\u002Fapi\u002Foverview?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=features)**：通过我们的插件和 SDK 轻松集成到您的技术栈中\n- **AI 就绪（AI-ready）**：开箱即用地支持 [LangChain](https:\u002F\u002Fwww.meilisearch.com\u002Fwith\u002FLangChain) 和 [Model Context Protocol (MCP)](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch-mcp)\n- **易于安装、部署和维护**\n\n## 📖 文档\n\n您可以在 [meilisearch.com\u002Fdocs](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=docs) 查阅 Meilisearch 的完整文档。\n\n## 🚀 快速入门\n\n如需了解如何设置 Meilisearch、向索引添加文档以及搜索文档的基本操作，请参阅我们的[文档指南](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=get-started)。\n\n## 🌍 全面增强您的 Meilisearch 体验\n\n告别服务器部署和手动更新，立即使用 [Meilisearch Cloud](https:\u002F\u002Fwww.meilisearch.com\u002Fcloud?utm_campaign=oss&utm_source=github&utm_medium=meilisearch)。该服务还提供全球多个区域的分析与监控功能，且无需信用卡即可试用。\n\n## 🧰 SDK 与集成工具\n\n在您的项目中安装任一官方 SDK，即可实现 Meilisearch 与您喜爱的语言或框架的无缝集成！\n\n请查看完整的 [Meilisearch 集成列表](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Fsdks?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=sdks-link)。\n\n[![Meilisearch 支持的不同语言和框架的 Logo，包括 React、Ruby on Rails、Go、Rust 和 PHP](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_readme_645bdf5cc0af.png)](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Fsdks?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=sdks-logos)\n\n## ⚙️ 高级用法\n\n经验丰富的用户应随时参考我们的 [API 参考文档](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Freference\u002Fapi\u002Foverview?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced)。\n\n我们还提供了大量专门介绍 Meilisearch 各项功能的指南，例如 [过滤](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Ffiltering?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced)、[排序](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fsorting?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced)、[地理搜索](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Ffine_tuning_results\u002Fgeosearch?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced)、[API 密钥](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Fmaster_api_keys?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced) 和 [租户令牌（tenant tokens）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fsecurity\u002Ftenant_tokens?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced)。\n\n最后，如需深入了解核心概念，请阅读我们关于 [文档（documents）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fcore_concepts\u002Fdocuments?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced) 和 [索引（indexes）](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fcore_concepts\u002Findexes?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=advanced) 的文章。\n\n## 🧾 版本与许可\n\nMeilisearch 提供两个版本：\n\n### 🧪 社区版（Community Edition, CE）\n\n- 在 [MIT 许可证](.\u002FLICENSE) 下完全开源\n- 包含核心搜索引擎，支持快速且精准的全文搜索、语义搜索或混合搜索\n- 免费供任何人使用，包括商业用途\n\n### 🏢 企业版（Enterprise Edition, EE）\n\n- 包含高级功能，例如：\n  - 分片（Sharding）\n  - S3 流式快照（S3-streaming snapshots）\n- 受 [商业许可证](.\u002FLICENSE-EE) 或 [Business Source License 1.1](https:\u002F\u002Fmariadb.com\u002Fbsl11) 约束\n- **未经与 Meilisearch 签订商业协议，不得在生产环境中使用**。\n  - 您仅可出于非生产目的（如测试、开发或评估）使用、修改和分发本许可作品。\n\n想要使用企业版功能？→ 请联系我们：[sales@meilisearch.com](maito:sales@meilisearch.com)。\n\n### 📦 外部 crate\n\nMeilisearch 引入了以下采用 MIT 许可证的外部 crate，并对其代码进行了修改，以使用位于 `crates\u002Fhttp-clients` 中的 HTTP 客户端：\n\n- 来自 \u003Chttps:\u002F\u002Fgithub.com\u002F64bit\u002Fasync-openai> 的 `external-crates\u002Fasync-openai` 和 `external-crates\u002Fasync-openai-macros`\n- 来自 \u003Chttps:\u002F\u002Fgithub.com\u002Fjpopesculian\u002Freqwest-eventsource> 的 `external-crates\u002Freqwest-eventsource`\n\n## 📊 遥测（Telemetry）\n\nMeilisearch 会收集**匿名化**的用户数据，以帮助我们改进产品。您可以随时[停用此功能](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Ftelemetry?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=telemetry#how-to-disable-data-collection)。\n\n如需请求删除已收集的数据，请发送邮件至 [privacy@meilisearch.com](mailto:privacy@meilisearch.com)。请务必在邮件中包含您的 `Instance UID`，这有助于我们快速定位并删除您的数据。\n\n如果您想了解更多关于我们会收集哪些数据以及用途，请查阅文档中的[遥测章节](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Flearn\u002Fwhat_is_meilisearch\u002Ftelemetry?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=telemetry#how-to-disable-data-collection)。\n\n## 📫 联系我们！\n\nMeilisearch 是由总部位于法国、团队成员遍布全球的软件公司 [Meili](https:\u002F\u002Fwww.meilisearch.com\u002Fcareers) 开发的搜索引擎。想进一步了解我们？[欢迎访问我们的博客！](https:\u002F\u002Fblog.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=contact)\n\n🗞 如果不想错过任何更新，[订阅我们的新闻简报](https:\u002F\u002Fshare-eu1.hsforms.com\u002F1LN5N0x_GQgq7ss7tXmSykwfg3aq)吧！我们承诺不会打扰您的收件箱：每两个月仅发送一期。\n\n💌 想提出建议或反馈意见？您可以通过以下渠道联系我们：\n\n- 功能请求请访问我们的 [产品仓库](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fproduct\u002Fdiscussions)\n- 发现 bug？请提交一个 [issue](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fissues)！\n- 想加入我们的 Discord 社区？[立即加入！](https:\u002F\u002Fdiscord.meilisearch.com\u002F?utm_campaign=oss&utm_source=github&utm_medium=meilisearch&utm_content=contact)\n\n感谢您的支持！\n\n## 👩‍💻 贡献\n\nMeilisearch 是开源的，并将永远保持开源！如果您希望为项目做出贡献，请参阅[我们的贡献指南](CONTRIBUTING.md)。\n\n## 📦 版本管理\n\nMeilisearch 的发布版本及其对应的二进制文件可在项目的 [releases 页面](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Freleases) 获取。\n\n二进制文件的版本遵循 [SemVer 规范](https:\u002F\u002Fsemver.org\u002F)。更多详情请阅读我们的[版本管理策略](.\u002Fdocumentation\u002Fversioning-policy.md)。\n\n与二进制文件不同，本仓库中的 crate 目前未发布到 [crates.io](https:\u002F\u002Fcrates.io\u002F)，也不遵循 [SemVer 规范](https:\u002F\u002Fsemver.org\u002F)。","# Meilisearch 快速上手指南\n\nMeilisearch 是一个极速、开源的搜索引擎，支持全文搜索、语义搜索和混合搜索，开箱即用，适合集成到各类应用中。\n\n## 环境准备\n\n- **操作系统**：Linux、macOS 或 Windows（推荐 Linux\u002FmacOS 获得最佳性能）\n- **内存**：建议至少 2GB RAM（数据量大时需更多）\n- **磁盘空间**：根据索引数据量而定\n- **依赖**：无需额外依赖（二进制版本自带运行时）\n\n> 💡 国内用户建议使用 [Meilisearch 官方 Docker 镜像](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fgetmeili\u002Fmeilisearch) 或从 GitHub Release 下载预编译二进制文件。暂无官方中国镜像，可配合代理或使用国内 Docker 加速器（如阿里云容器镜像服务）提升下载速度。\n\n## 安装步骤\n\n### 方法一：使用 Docker（推荐）\n\n```bash\ndocker run -it --rm \\\n  -p 7700:7700 \\\n  -v $(pwd)\u002Fmeili_data:\u002Fmeili_data \\\n  getmeili\u002Fmeilisearch:v1.9\n```\n\n### 方法二：下载预编译二进制（Linux\u002FmacOS）\n\n```bash\n# 下载最新版（以 v1.9 为例，请替换为实际版本）\ncurl -L https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Freleases\u002Fdownload\u002Fv1.9\u002Fmeilisearch-linux-amd64 -o meilisearch\nchmod +x meilisearch\n.\u002Fmeilisearch --db-path .\u002Fmeili_data\n```\n\n> 启动后默认监听 `http:\u002F\u002F127.0.0.1:7700`，首次启动会生成主密钥（Master Key），请妥善保存。\n\n## 基本使用\n\n以下示例使用 `curl` 演示最简流程：创建索引 → 添加文档 → 执行搜索。\n\n### 1. 添加测试文档\n\n```bash\n# 创建索引并添加电影数据（无需提前声明 schema）\ncurl -X POST 'http:\u002F\u002F127.0.0.1:7700\u002Findexes\u002Fmovies\u002Fdocuments' \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '[{\n    \"id\": 1,\n    \"title\": \"Interstellar\",\n    \"genres\": [\"Sci-Fi\", \"Adventure\"]\n  }, {\n    \"id\": 2,\n    \"title\": \"Inception\",\n    \"genres\": [\"Action\", \"Sci-Fi\"]\n  }]'\n```\n\n### 2. 执行搜索\n\n```bash\n# 搜索关键词 \"inter\"\ncurl 'http:\u002F\u002F127.0.0.1:7700\u002Findexes\u002Fmovies\u002Fsearch?q=inter'\n```\n\n返回结果将包含匹配的电影，并自动处理拼写容错（如输入 \"intrstrlr\" 也能命中）。\n\n> 📌 提示：生产环境请通过 `--master-key` 参数设置 API 密钥，并使用 HTTPS。详细配置请参考 [官方文档](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs)。","一家中小型电商团队正在开发一个面向年轻用户的潮流服饰网站，需要为商品列表页提供快速、精准且支持错别字容错的搜索功能。\n\n### 没有 meilisearch 时\n- 使用数据库自带的 LIKE 查询，搜索“卫衣”无法匹配到“连帽衫”等语义相近词，用户常搜不到想要的商品。\n- 用户输入“白T恤”但打成“白T血”时，系统直接返回空结果，体验极差。\n- 随着商品数量增长到数万条，每次搜索响应时间超过2秒，页面加载明显卡顿。\n- 实现筛选（如价格区间、品牌、尺码）需手动拼接复杂 SQL，代码冗长且难以维护。\n- 添加新搜索功能（如按颜色语义搜索）需额外引入 NLP 模型，开发成本高、周期长。\n\n### 使用 meilisearch 后\n- 开箱即用的语义理解能力让“卫衣”能关联到“连帽上衣”等同义表达，搜索召回率显著提升。\n- 内置 typo tolerance 自动纠正“白T血”为“白T恤”，确保用户即使输错也能获得相关结果。\n- 搜索响应稳定在50毫秒内，即使商品库扩展到10万+条，性能依然流畅。\n- 通过 facets 功能轻松实现多维度筛选，前端只需调用 API 参数，后端逻辑大幅简化。\n- 利用 hybrid search 融合关键词与向量检索，未来可无缝支持“类似这件”的图片或文本语义搜索。\n\nmeilisearch 让团队在零 AI 工程投入下，快速上线了媲美大厂的智能搜索体验。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeilisearch_meilisearch_ff6f0e75.gif","Meilisearch","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmeilisearch_fab62603.png","Powerful, fast, and an easy to use search engine ",null,"bonjour@meilisearch.com","www.meilisearch.com","https:\u002F\u002Fgithub.com\u002Fmeilisearch",[83,87,91],{"name":84,"color":85,"percentage":86},"Rust","#dea584",99.9,{"name":88,"color":89,"percentage":90},"Shell","#89e051",0.1,{"name":92,"color":93,"percentage":94},"Dockerfile","#384d54",0,56964,2481,"2026-04-05T08:19:14","NOASSERTION","Linux, macOS, Windows","未说明",{"notes":102,"python":100,"dependencies":103},"Meilisearch 是用 Rust 编写的，无需 Python 环境。可直接下载二进制文件运行，支持 Docker 部署。默认使用本地磁盘存储数据，需确保有足够磁盘空间。",[],[14,15,51,13,53,54],[106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],"search-engine","typo-tolerance","site-search","database","enterprise-search","search","app-search","full-text-search","geosearch","instantsearch","search-as-you-type","faceting","fuzzy-search","vector-database","vectors","hybrid-search","semantic-search","ai","api","vector-search",268,"2026-03-27T02:49:30.150509","2026-04-06T02:33:42.512481",[130,135,140,145,150,154],{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},484,"使用 Docker 运行 Meilisearch v0.24 时，为什么数据没有写入主机的 \u002Fdata.ms 目录？","从 v0.24 开始，Meilisearch Docker 镜像更改了工作目录，数据默认写入容器内的 \u002Fhome\u002Fmeili\u002Fdata.ms 而非 \u002Fdata.ms。若要将数据持久化到主机，应挂载卷到新路径，例如：-v $(pwd)\u002Fdata.ms:\u002Fhome\u002Fmeili\u002Fdata.ms。或者通过设置环境变量 MEILI_DB_PATH=\u002Fdata.ms 并确保挂载对应路径。该问题在 v0.25.0-rc2 中已修复。","https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fissues\u002F1969",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},485,"在 Laravel Scout 中使用 Meilisearch 时，为什么 attributesToHighlight 设置后搜索结果中没有高亮内容？","Laravel Scout 默认只返回原始文档字段，不会自动包含 Meilisearch 返回的 _formatted 高亮字段。虽然 Meilisearch API 正确返回了高亮结果（可通过直接调用 $meilisearch->search() 验证），但 Scout 的模型集合未包含这些格式化数据。解决方法是手动处理搜索响应，或扩展 Scout 适配器以保留 _formatted 字段。","https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fissues\u002F1630",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},486,"Meilisearch 在高频更新场景下（如用户点赞）为何延迟高达 30-50 分钟？","高频单条更新会导致 Meilisearch 写入队列积压。建议避免逐条更新，改用批量操作：例如将数据导出为 CSV 文件并通过 Meilisearch 的批量导入接口一次性上传，可将数百万条记录的索引时间从几小时缩短至几秒。此外，检查 Laravel Scout 的批量大小配置也可能改善性能。","https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fissues\u002F1098",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},487,"为什么设置了 attributesForFaceting 后，对应的字段没有出现在 displayedAttributes 或 searchableAttributes 中？","如果先设置 facets（attributesForFaceting）再添加文档，Meilisearch 不会自动将 facet 字段加入 displayedAttributes 和 searchableAttributes。解决方法是：要么先添加包含 facet 字段的文档，再设置 facets；要么在设置 facets 后，显式地将该字段添加到 displayedAttributes 和 searchableAttributes 列表中。","https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fissues\u002F761",{"id":151,"question_zh":152,"answer_zh":153,"source_url":134},488,"如何在 Docker Compose 中正确配置 Meilisearch 的数据持久化路径？","在 docker-compose.yml 中，应通过 MEILI_DB_PATH 环境变量指定数据库路径，并确保该路径在容器内有写权限。例如：设置 MEILI_DB_PATH: \u002Fdata，并挂载卷 volumes: - .\u002Fmeili-data:\u002Fdata。注意 Meilisearch 容器以 meili 用户运行，需确保挂载目录对 UID 1000 可写，否则可能因权限问题导致数据无法写入（尽管错误信息可能不明确）。",{"id":155,"question_zh":156,"answer_zh":157,"source_url":139},489,"自定义排序规则（如 desc(created_at)）为什么不生效？","Meilisearch 的自定义排序规则（custom ranking rules）仅支持数值型字段。如果 created_at 是字符串（如 ISO 8601 格式），排序将无效。解决方案是添加一个额外的数值字段（如 created_at_timestamp），存储 Unix 时间戳，并在排序规则中使用该字段，例如：desc(created_at_timestamp)。",[159,164,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244,249,254],{"id":160,"version":161,"summary_zh":162,"released_at":163},100120,"v1.41.0","### ✨ Enhancement\r\n- **Support dynamic search rules with pinning** by @YoEight in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6182\r\n  Introduce the  Dynamic Search Rules (DSR) experimental feature, making it easy to promote the right content for the right searches with flexible, condition-based pinning. In this first version, rules can be triggered by query-based conditions such as empty queries or literal substring matches, as well as time windows. Multiple documents can be pinned in a defined order, and pins still work with filtering, pagination, facet distribution, hybrid search, and federated search.\r\n\r\n  Rules can be created or updated with `PATCH \u002Fdynamic-search-rules\u002F{uid}` and removed with `DELETE \u002Fdynamic-search-rules\u002F{uid}`. In this first version, a rule can define query- or time-based conditions and pin specific documents at fixed positions in the results list.\r\n  \r\n  \u003Cdetails>\r\n\t\u003Csummary>Example of rule creation\u002Fupdate\u003C\u002Fsummary>\r\n         \r\n        \r\n        \u002F\u002F PATCH \u002Fdynamic-search-rules\u002Ffeatured-wireless-headphones\r\n        {\r\n          \"description\": \"Promote featured products for wireless headphone searches\",\r\n          \"active\": true,\r\n          \"conditions\": [\r\n            { \"scope\": \"query\", \"contains\": \"headphone\" }\r\n          ],\r\n          \"actions\": [\r\n            {\r\n              \"selector\": { \"indexUid\": \"products\", \"id\": \"featured-headphones-001\" },\r\n              \"action\": { \"type\": \"pin\", \"position\": 0 }\r\n            },\r\n            {\r\n              \"selector\": { \"indexUid\": \"products\", \"id\": \"featured-headphones-002\" },\r\n              \"action\": { \"type\": \"pin\", \"position\": 1 }\r\n            }\r\n          ]\r\n        }\r\n        \r\n\r\n\r\n   \u003C\u002Fdetails>\r\n\r\n- **Default to `useNetwork: true` in sharded instances by** @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6278\r\n\r\n    > This release contains [**breaking changes**](#search-requests-breaking-changes) for users of the `network` experimental feature.\r\n    \r\n    ##### Search requests now use the network by default when (replicated) sharding is enabled\r\n    \r\n    ##### \u003Ca id=\"search-requests-breaking-changes\">§\u003C\u002Fa> Breaking changes\r\n    \r\n    When `network.leader` is set in the instance, `useNetwork` now defaults to `true` in search requests when omitted.\r\n    \r\n    So, when a network is configured, the following:\r\n    \r\n    \u003Cdetails>\r\n    \r\n    \r\n    \u003Csummary>Search request without an explicit useNetwork\u003C\u002Fsummary>\r\n    \r\n    \r\n    ```jsonc\r\n    \u002F\u002F POST \u002Findexes\u002Fmovies\u002Fsearch\r\n    {\r\n      \"q\": \"Batman dark knight returns 1\",\r\n      \"filter\": \"genres IN [Action, Adventure]\",\r\n      \"facets\": [\"genres\"],\r\n      \"limit\": 5\r\n      \u002F\u002F No `useNetwork` is passed\r\n    }\r\n    ```\r\n    \r\n    \r\n    \u003C\u002Fdetails>\r\n    \r\n    is now equivalent to a federated search over multiples remotes so that all shards in the network are covered exactly once.\r\n    \r\n    \r\n    \u003Cdetails>\r\n    \r\n    \u003Csummary>Equivalent federated search request\u003C\u002Fsummary>\r\n    \r\n    \r\n    ```jsonc\r\n    \u002F\u002F POST \u002Fmulti-search\r\n    {\r\n        \"federation\": {\r\n            \"limit\": 5,\r\n            \"facetsByIndex\": {\r\n                \"movies\": [\r\n                    \"genres\"\r\n                ]\r\n            },\r\n            \"merge\": {}\r\n        },\r\n        \u002F\u002F assuming 3 remotes 0, 1, 2 and 3 shards a, b, c such that\r\n        \u002F\u002F 0 owns a, b\r\n        \u002F\u002F 1 owns b, c\r\n        \u002F\u002F 2 owns c, a\r\n        \"queries\": [\r\n            {\r\n                \"indexUid\": \"movies\",\r\n                \"federationOptions\": {\r\n                    \"remote\": \"0\"\r\n                },\r\n                \"q\": \"Batman dark knight returns 1\",\r\n                \"filter\": [\"genres IN [Action, Adventure]\", \"_shard = a\"]\r\n            },\r\n            {\r\n                \"indexUid\": \"movies\",\r\n                \"federationOptions\": {\r\n                    \"remote\": \"0\" \u002F\u002F useNetwork picked remote 0 for both shard a and b\r\n                },\r\n                \"q\": \"Batman dark knight returns 1\",\r\n\t\t\t     \"filter\": [\"genres IN [Action, Adventure]\", \"_shard = b\"]\r\n            },\r\n            {\r\n                \"indexUid\": \"movies\",\r\n                \"federationOptions\": {\r\n                    \"remote\": \"2\"\r\n                },\r\n                \"q\": \"Batman dark knight returns 1\",\r\n\t\t\t     \"filter\": [\"genres IN [Action, Adventure]\", \"_shard = c\"]\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \r\n    \r\n    \u003C\u002Fdetails>\r\n    \r\n    Responding with documents from all the shards:\r\n    \r\n    \u003Cdetails>\r\n    \r\n    \u003Csummary>Response\u003C\u002Fsummary>\r\n    \r\n    ```jsonc\r\n    {\r\n      \"hits\": [\r\n        {\r\n          \"id\": 123025,\r\n          \"title\": \"Batman: The Dark Knight Returns, Part 1\",\r\n          \"overview\": \"Batman has not been seen for ten years. A new breed of criminal ravages Gotham City, forcing 55-year-old Bruce Wayne back into the cape and cowl. But, does he still have what it takes to fight crime in a new era?\",\r\n          \"genres\": [\r\n            \"Action\",\r\n            \"Animation\",\r\n            \"Mystery\"\r\n          ],\r\n          \"poster\": ","2026-03-30T13:55:39",{"id":165,"version":166,"summary_zh":167,"released_at":168},100121,"v1.40.0","This release introduced support for the `distinct` attribute in federated search, enabling cross-index distinct attributes with facet distribution support. Additionally, significant performance improvements were delivered, including faster federated search (approximately 100ms faster), optimized JSON document generation for better handling of large documents and a much better memory usage for large workloads.\r\n\r\n### ✨ Enhancement\r\n\r\n- **Support `distinct` in federated search** by @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6214\r\n    \r\n    The `distinct` attribute can now be passed to the `federation` object in federated search to apply a global, cross-index and cross-remote distinct computation to the results.\r\n    \r\n\t\u003Cdetails>\r\n\t\u003Csummary>Example of a federated search request with distinct\u003C\u002Fsummary>\r\n\t\r\n\t```json\r\n\t{\r\n\t  \"federation\": {\r\n\t    \"distinct\": \"genres\", \u002F\u002F ✨ NEW\r\n\t    \"facetsByIndex\": { \u002F\u002F recovering facet distribution is also supported with distinct\r\n\t      \"comics\": [\r\n\t        \"genres\"\r\n\t      ],\r\n\t      \"movies\": [\r\n\t        \"genres\"\r\n\t      ]\r\n\t    },\r\n\t    \"mergeFacets\": {} \u002F\u002F merging facet distributions is also supported with distinct\r\n\t  },\r\n\t  \"queries\": [\r\n\t    {\r\n\t      \"indexUid\": \"comics\",\r\n\t      \"q\": \"batman\",\r\n\t      \"attributesToRetrieve\": [\"title\", \"genres\"],\r\n\t      \"useNetwork\": true \u002F\u002F distinct is also supported with network queries\r\n\t    },\r\n\t    {\r\n\t      \"indexUid\": \"movies\",\r\n\t      \"q\": \"superman\",\r\n\t      \"attributesToRetrieve\": [\"title\", \"genres\"],\r\n\t      \"useNetwork\": true\r\n\t    }\r\n\t  ]\r\n\t}\r\n\t```\r\n\t\u003C\u002Fdetails>\r\n\r\n\t\u003Cdetails>\r\n\t\u003Csummary>Sample response to a federated search request with distinct\u003C\u002Fsummary>\r\n\t\r\n\t```json\r\n\t{\r\n\t  \"hits\": [\r\n\t    {\r\n\t      \"title\": \"Batman\",\r\n\t      \"genres\": [\r\n\t        \"Family\",\r\n\t        \"Adventure\",\r\n\t        \"Comedy\",\r\n\t        \"Science Fiction\",\r\n\t        \"Crime\"\r\n\t      ],\r\n\t      \"_federation\": {\r\n\t        \"indexUid\": \"comics\",\r\n\t        \"queriesPosition\": 0,\r\n\t        \"weightedRankingScore\": 1.0,\r\n\t        \"remote\": \"ms2\"\r\n\t      }\r\n\t    },\r\n\t    {\r\n\t      \"title\": \"Batman\",\r\n\t      \"genres\": [\r\n\t        \"Fantasy\",\r\n\t        \"Action\"\r\n\t      ],\r\n\t      \"_federation\": {\r\n\t        \"indexUid\": \"comics\",\r\n\t        \"queriesPosition\": 0,\r\n\t        \"weightedRankingScore\": 1.0,\r\n\t        \"remote\": \"ms1\"\r\n\t      }\r\n\t    },\r\n\t    {\r\n\t      \"title\": \"Batman & Bill\",\r\n\t      \"genres\": [\r\n\t        \"Documentary\"\r\n\t      ],\r\n\t      \"_federation\": {\r\n\t        \"indexUid\": \"comics\",\r\n\t        \"queriesPosition\": 0,\r\n\t        \"weightedRankingScore\": 0.9848484848484848,\r\n\t        \"remote\": \"ms1\"\r\n\t      }\r\n\t    },\r\n\t    {\r\n\t      \"title\": \"Superman: Red Son\",\r\n\t      \"genres\": [],\r\n\t      \"_federation\": {\r\n\t        \"indexUid\": \"movies\",\r\n\t        \"queriesPosition\": 1,\r\n\t        \"weightedRankingScore\": 0.9848484848484849,\r\n\t        \"remote\": \"ms0\"\r\n\t      }\r\n\t    },\r\n\t    {\r\n\t      \"title\": \"Superman, Spider-Man or Batman\",\r\n\t      \"genres\": [\r\n\t        \"Drama\"\r\n\t      ],\r\n\t      \"_federation\": {\r\n\t        \"indexUid\": \"movies\",\r\n\t        \"queriesPosition\": 1,\r\n\t        \"weightedRankingScore\": 0.9848484848484849,\r\n\t        \"remote\": \"ms0\"\r\n\t      }\r\n\t    }\r\n\t  ],\r\n\t  \"processingTimeMs\": 15,\r\n\t  \"limit\": 5,\r\n\t  \"offset\": 0,\r\n\t  \"estimatedTotalHits\": 11,\r\n\t  \"facetDistribution\": {\r\n\t    \"genres\": {\r\n\t      \"Action\": 1,\r\n\t      \"Adventure\": 1,\r\n\t      \"Comedy\": 3,\r\n\t      \"Crime\": 2,\r\n\t      \"Documentary\": 1,\r\n\t      \"Drama\": 1,\r\n\t      \"Family\": 1,\r\n\t      \"Fantasy\": 1,\r\n\t      \"Horror\": 2,\r\n\t      \"Romance\": 1,\r\n\t      \"Science Fiction\": 1,\r\n\t      \"Thriller\": 1,\r\n\t      \"Western\": 1\r\n\t    }\r\n\t  },\r\n\t  \"facetStats\": {},\r\n\t  \"requestUid\": \"019d05c7-ea65-77a1-8274-22a8ba9e26db\",\r\n\t  \"remoteErrors\": {}\r\n\t}\r\n\t```\r\n\t\u003C\u002Fdetails>\r\n        \r\n  Note the following to apply the distinct attribute at the federation level:\r\n  \r\n  1. Applying `distinct` at the query level at the same time as the federation level is disallowed and will return a HTTP 400 error.\r\n  2. The chosen distinct field will apply to all remotes and indexes, so it must be a filterable attribute for all participating remotes and indexes.\r\n  3. While Meilisearch attempts to compute the most accurate facet distribution, in distributed contexts this cannot be guaranteed as the distinct algorithm is not applied on all of the remote documents.\r\n        \r\n- **Improve performance of federated search** by @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6229\r\n    \r\n    Improves performance of federated search: about 100ms faster for all requests. Improves reliability of the HTTP server: the server will no longer be blocked when too many federated search requests are being processed.\r\n    \r\n- **Optimize the generation of JSON documents** by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6257\r\n    \r\n    Addresses performance issues that users might encounter when requesting large documents. Additionally, performance is enhanced when users request only a small subset o","2026-03-23T10:30:56",{"id":170,"version":171,"summary_zh":172,"released_at":173},100122,"v1.39.0","# What's Changed\r\n\r\n## **✨ Enhancement**\r\n\r\n### 🔬 Cross-index document hydration\r\n\r\nAdd a new `ForeignKeys` setting allowing to hydrate documents with documents coming from other indexes.\r\n\r\n> 📓 Note: This implementation doesn't support a remote sharding environment\r\n\r\n#### `foreignKeys` experimental feature\r\n\r\nA new experimental feature, `foreignKeys`, has been added to the `\u002Fexperimental-feature` route that must be set to true to activate the hydration.\r\n\r\n```\r\ncurl -X PATCH 'http:\u002F\u002F127.0.0.1:7700\u002Fexperimental-features' \\\r\n  -H 'Content-Type: application\u002Fjson' \\\r\n  --data-binary '{\"foreignKeys\": true}'\r\n```\r\n\r\n#### `foreignKeys` index setting\r\n\r\nA new index setting, `foreignKeys`, has been added to the `\u002Findexes\u002F{index_uid}\u002Fsettings`:\r\n```jsonc\r\n\u002F\u002F new setting, an array of foreign keys that allows multiple foreign relationships between indexes\r\n\"foreignKeys\":  [\r\n\t{\r\n\t\t\u002F\u002F the path in the JSON document containing foreign document ids\r\n\t\t\"fieldName\": \"actors\",\r\n\t\t\r\n\t\t\u002F\u002F the UID of the foreign index containing the documents to fetch during hydration\r\n        \"foreignIndexUid\": \"actors\"\r\n\t}\r\n]\r\n```\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>\r\n\r\n#### Example\r\n\r\n\u003C\u002Fsummary>\r\n\r\nWith this new feature, a document shaped as follows:\r\n```jsonc\r\n{\r\n  \"id\": 1,\r\n  \"title\": \"Forrest Gump\",\r\n  \u002F\u002F Document IDs in foreign index\r\n  \"actors\": [\r\n    1\r\n  ]\r\n}\r\n```\r\n\r\nWill be hydrated as follows in a search response:\r\n```jsonc\r\n{\r\n  \"id\": 1,\r\n  \"title\": \"Forrest Gump\",\r\n  \"actors\": [\r\n\t{\r\n\t  \"id\": 1,\r\n\t  \"name\": \"Tom\",\r\n\t  \"familyName\": \"Hanks\",\r\n\t  \"birthDate\": \"1956-07-09\"\r\n\t}\r\n  ]\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\nBy @ManyTheFish in #6047\r\n\r\n\r\n### Disable proxy response buffering on Server-Sent Events (SSE)\r\n\r\nAdd `X-Accel-Buffering: no` on `POST \u002Fchats\u002F{workspace_uid}\u002Fchat\u002Fcompletions` when the streaming mode is activated. \r\nBy **[@YoEight](https:\u002F\u002Fgithub.com\u002FYoEight)** in [#6228](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6228)\r\n\r\n## 🪲 Bug fixes\r\n\r\n- Fix a memory leak in the indexation pipeline by **[@Kerollmops](https:\u002F\u002Fgithub.com\u002FKerollmops)** in [#6212](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6212)\r\n    \r\n    We fixed an important memory leak caused by an invalid use of bumpalo. If you've seen Meilisearch using more and more memory over time, this issue is no longer visible in the latest version. If you want to read more about the bumpalo-trap we felt in, [here is a good summary](https:\u002F\u002Fdocs.rs\u002Fbumpalo\u002Flatest\u002Fbumpalo\u002F#deallocation-en-masse-but-no-drop). It looks like this leak was introduced in v1.12, so approximately a year ago...\r\n    \r\n- Avoid losing tasks by applying deltas on the wtxn view by **[@Kerollmops](https:\u002F\u002Fgithub.com\u002FKerollmops)** in [#6222](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6222)\r\n    \r\n    We addressed a small performance regression introduced in v1.38.1 that affected sending updates to the engine during task deletion. We've restored the task deletion performance to match v1.38.0 levels and ensured no race conditions occur while still allowing updates during deletion.\r\n    \r\n\r\n## **🔩 Miscellaneous**\r\n\r\n- Ignore flaky test on windows by **[@dureuill](https:\u002F\u002Fgithub.com\u002Fdureuill)** in [#6226](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6226)\r\n- Fix small documentation mistakes by **[@ManyTheFish](https:\u002F\u002Fgithub.com\u002FManyTheFish)** in [#6205](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6205)\r\n- Improve messaging when field is missing in the settings indexing pipeline by **[@Kerollmops](https:\u002F\u002Fgithub.com\u002FKerollmops)** in [#6213](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6213)\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.38.0...v1.39.0","2026-03-16T12:54:55",{"id":175,"version":176,"summary_zh":177,"released_at":178},100123,"v1.38.2","Meilisearch v1.38.2 fixes a regression introduced in Meilisearch v1.38.0 where Meilisearch could sometimes stop processing tasks after an automatic task queue cleanup performed while more tasks where being added.\r\n\r\nWe recommend that all users in v1.38.0 and v1.38.1 migrate to v1.38.2.\r\n\r\nNote that the dumpless upgrade process can take up to one minute before the HTTP server becomes available when migrating from a previous v1.38 version.\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.38.1...v1.38.2","2026-03-11T11:36:01",{"id":180,"version":181,"summary_zh":182,"released_at":183},100124,"v1.38.1","Meilisearch v1.38.1 fixes a regression we have seen in task processing, which caused the engine to stop processing tasks.\r\n\r\n### 🪲 Bug fixes\r\n\r\n- Revert, optimize, and fix task deletion. By @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6219\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.38.0...v1.38.1","2026-03-11T10:11:22",{"id":185,"version":186,"summary_zh":187,"released_at":188},100125,"v1.38.0","Meilisearch v1.38 drastically improves indexing performance for embeddings, cleans up the task queue of orphan tasks and batches, ensures they are correctly deleted now, fixes issues users may encounter with OpenAI or VoyageAI when generating embeddings, and improves the tooling for generating routes in the documentation.\r\n\r\n### **✨ Enhancement**\r\n\r\n- Embeddings: Use the latest version of hannoy with improved performances by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6184\r\n    We drastically reduced embedding indexing time by eliminating full database scans. It is more efficient to add a couple of embeddings to a large database now.\r\n- Tasks: Optimize and fix task deletion by @Mubelotix and @kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F5828\r\n\r\n### 🪲 Bug fixes\r\n\r\n- Embedders: Fix the intermittent `connection reset by peer` errors when embedding documents or search queries using a remote embedder.  By @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6191\r\n\r\n### 🔩 Miscellaneous\r\n\r\n- Enforce that routes appear in the reference documentation by @dureuill and @manythefish in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6200\r\n  [The reference API](https:\u002F\u002Fwww.meilisearch.com\u002Fdocs\u002Freference\u002Fapi\u002F) is now generated from the source code, but it used to miss some actix-declared routes. It is now mandatory to attach a route when using the newly-provided `routes::routes` and `routes::path` macros, which ensures the route is added to the reference. Please refer to the documentation of the individual macros and the many examples throughout the codebase for more details.\r\n- Chore: remove verbose debug log on list documents by @StephaneRob in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6198\r\n- Add guide to [CONTRIBUTING.md](http:\u002F\u002Fcontributing.md\u002F) to test doc locally by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6180\r\n- Docs: capitalize LangChain and MCP in README by @24f1000637 in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6183\r\n- Docs: improve documentation of the parameters of the search route by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6194\r\n\r\n### New Contributors\r\n\r\n- @StephaneRob made their first contribution in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6198\r\n- @24f1000637 made their first contribution in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6183","2026-03-09T08:06:29",{"id":190,"version":191,"summary_zh":192,"released_at":193},100126,"v1.37.0","> [!IMPORTANT]  \r\n> This release contains [**breaking changes**](#v137-replicated-sharding-breaking-changes) for users of the `network` experimental feature.\r\n\r\n\r\nMeilisearch v1.37 introduces [replicated sharding](#v137-replicated-sharding), removes the [`vectorStoreSetting` experimental feature](#v137-vector-store), stabilizes our new vector store for best performance, adds a [security fix](#v137-security) and [miscellaneous improvements](#v137-misc).\r\n\r\n\r\n# ✨ Improvements\r\n\r\n## \u003Ca id=\"v137-replicated-sharding\" href=\"#v137-replicated-sharding\">§\u003C\u002Fa> Replicated sharding\r\n\r\n> [!NOTE]\r\n> Replicated sharding requires Meilisearch Enterprise Edition (EE).\r\n> - Users of Meilisearch Cloud, please contact support if you need replicated sharding.\r\n> - Users of the Community Edition, please contact the sales if you want to use replicated sharding in production.\r\n\r\n### \u003Ca id=\"v137-replicated-sharding-breaking-changes\" href=\"#v137-replicated-sharding-breaking-changes\">§\u003C\u002Fa> Breaking changes\r\n\r\n- `network` objects sent to the `PATCH \u002Fnetwork` route must now contain at least one `shard` object containing at least one remote when `leader` is not `null`.\r\n\r\nExisting databases will be migrated automatically when upgraded with `--experimental-dumpless-upgrade` when `leader` is not `null`, such that for each remote:\r\n1. A shard with the same name as the remote is created\r\n2. This shard has exactly one remote in its `remotes` list: the remote with the same name as the shard.\r\n\r\nThis change will not cause any document to be resharded.\r\n\r\nTo be able to upgrade without resharding, the migration uses the same name for remotes and for shards. However, in new configurations, we recommend using different names for shards and remotes.\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>Example of migration\u003C\u002Fsummary>\r\n\r\nFor instance, the following network object:\r\n\r\n```jsonc\r\n{\r\n  \"leader\": \"ms-00\",\r\n  \"self\": \"ms-01\",\r\n  \"remotes\": {\r\n    \"ms-00\": { \u002F* .. *\u002F },\r\n    \"ms-01\": { \u002F* .. *\u002F }\r\n  }\r\n}\r\n```\r\n\r\nis converted to:\r\n\r\n```jsonc\r\n{\r\n  \"leader\": \"ms-00\",\r\n  \"self\": \"ms-01\",\r\n  \"remotes\": {\r\n    \"ms-00\": { \u002F* .. *\u002F },\r\n    \"ms-01\": { \u002F* .. *\u002F }\r\n  },\r\n  \"shards\": {  \u002F\u002F ✨ NEW\r\n    \"ms-00\": {  \u002F\u002F shard named like the remote\r\n      \"remotes\": [\"ms-00\"] \u002F\u002F is owned by the remote\r\n    },\r\n    \"ms-01\": {\r\n      \"remotes\": [\"ms-01\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n### Addition of `network.shards`\r\n\r\nThe `network` object for routes `PATCH \u002Fnetwork`  and `GET \u002Fnetwork` now contains the new field `shards`, which is an object whose values are `shard` objects, and keys the name of each shard.\r\n\r\nEach `shard` object contains a single field `remotes`, which is an array of strings, each string representing the name of an existing remote. \r\n\r\n#### Convenience fields\r\n\r\nThe `shard` objects in `PATCH \u002Fnetwork` contain the additional fields `addRemotes` and `removeRemotes` meant for convenience:\r\n\r\n- pass an array of remote names to `shard.addRemotes` to add these remotes to the list of remotes of a shard.\r\n- pass an array of remote names to `shard.removeRemotes` to remove these remotes from the list of remotes of a shard.\r\n- if present and non-`null`, `shard.remotes` will completely override the existing list of remotes for a shard.\r\n- if several of these options are present and non-`null`, then the order of application is  `shard.remotes`, then `shard.addRemotes`, then `shard.removeShards`.\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>Adding a new shard with some remotes\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\u002F\u002F PATCH \u002Fnetwork\r\n{\r\n  \u002F\u002F assuming that remotes `ms-0`, `ms-1`, `ms-2` where sent in a previous call to PATCH \u002Fnetwork\r\n  \"shards\": {\r\n    \"s-a\": { \u002F\u002F new shard\r\n      \"remotes\": [\"ms-0\", \"ms-1\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nRemotes `ms-0` and `ms-1` own the new shard `s-a`.\r\n\r\n\u003C\u002Fdetails>\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>Fully overriding the list of remotes owning a shard\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\u002F\u002F PATCH \u002Fnetwork\r\n{\r\n  \u002F\u002F assuming remotes `ms-0`, `ms-1`, `ms-2`\r\n  \u002F\u002F assuming shard `s-a`, owned by `ms-0` and `ms-1`\r\n  \"shards\": {\r\n    \"s-a\": {\r\n      \"remotes\": [\"ms-2\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n`ms-2` is now the sole owner of `s-a`, replacing `ms-0` and `ms-1`.\r\n\r\n\u003C\u002Fdetails>\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>Adding a remote without overriding the list of remotes owning a shard\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\u002F\u002F PATCH \u002Fnetwork\r\n{\r\n  \u002F\u002F assuming remotes `ms-0`, `ms-1`, `ms-2`\r\n  \u002F\u002F assuming shard `s-a`, owned by `ms-2`\r\n  \"shards\": {\r\n    \"s-a\": {\r\n      \"addRemotes\": [\"ms-0\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n`ms-0` and `ms-2` are now the owners of `s-a`.\r\n\r\n\u003C\u002Fdetails>\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>Removing a remote without overriding the list of remotes owning a shard\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\u002F\u002F PATCH \u002Fnetwork\r\n{\r\n  \u002F\u002F assuming remotes `ms-0`, `ms-1`, `ms-2`\r\n  \u002F\u002F assuming shard `s-a`, owned by `ms-0` and `ms-2`\r\n  \"shards\": {\r\n    \"s-a\": {\r\n      \"removeRemotes\": [\"ms-2\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n`ms-0` is now the sole owner of `s-a`.\r\n\r\n\u003C\u002Fdetails>\r\n\r\n\u003Cdetails>\r\n\r\n\u003Csummary>Entirely removing a shard from the list of shards\u003C\u002Fsummary>\r\n\r\n\r\nSet the shard to ","2026-03-02T09:16:36",{"id":195,"version":196,"summary_zh":197,"released_at":198},100127,"v1.36.0","Version v1.36.0 introduces an exciting update to the ranking rules to improve the engine's relevance. It's actually the first time we've made such a change since v1.0, and we're really happy about this improvement!\r\n\r\n### ✨ Enhancement\r\n\r\n- Introduce the `attributeRank` and `wordPosition` criteria by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6154, https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6155, and https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6164\r\n\r\n    We released two new ranking rules that Meilisearch had already been using internally for the `attribute` one, which is basically both ranking rules applied one after the other:\r\n\r\n    - `attributeRank`: A document is considered better if the query words match in a higher searchable attribute. It ignores the position of the query words in this attribute.\r\n    - `wordPosition`: A document is considered better if the query words match closer to the beginning of an attribute. The attribute rank is ignored by this rule.\r\n\r\n- We continue our policy of migrating everyone to use a homemade HNSW by introducing a new dumpless upgrade step that migrates index uses the old annoy vector store to the new Hannoy one. Changing the vector store backend affects the ranking score. This step can take a couple of minutes when the number of embeddings is high, and we recommend changing the vector store backend beforehand to gain more control if needed. To do so, you must enable the `vectorStoreSetting` experimental feature and set the `vectorStore` root setting to `experimental`.\r\n    \r\n\r\n### 🪲 Bug fixes\r\n\r\n- Fix search failing when using `attributesToSearchOn` on an empty index by @zen-zap in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F5944\r\n\r\n### 🔒 Security\r\n\r\n- Bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6142\r\n- Bump jsonwebtoken from 9.3.1 to 10.3.0 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6141\r\n- Bump time from 0.3.44 to 0.3.47 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6144\r\n- Bump rsa from 0.9.9 to 0.9.10 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6149\r\n\r\n### 🔩 Miscellaneous\r\n\r\n- Improve OpenAPI docs and CIs to improve documentation experience by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6145\r\n\r\n> [!WARNING]\r\n> Breaking change: the `meilisearch-openapi-mintlify.json` file will not be available in the release assets anymore. If you were using it, please refer to the one that is now available [in our public documentation repository](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fdocumentation\u002Fblob\u002Fmain\u002Fassets\u002Fopen-api\u002Fmeilisearch-openapi-mintlify.json).\r\n\r\n- GenAI contributing and PR template changes by @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6140\r\n- Fix \"test with almost all features\" by @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6139 and https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6148\r\n- Allow any IP for SDK tests by @Strift in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6151\r\n- Improve output of the declarative tests, also in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6164\r\n\r\n❤️ Thanks to @zen-zap for contributing to this release!","2026-02-23T08:13:32",{"id":200,"version":201,"summary_zh":202,"released_at":203},100128,"v1.35.1","# 🦋 Bug fixes\r\n\r\nMeilisearch v1.35.1 fixes a possible task database corruption issue that would occur when using the S3 streaming snapshot method.\r\n\r\n- Users of the Community Edition do not need to upgrade as this feature is Enterprise Edition only\r\n- Affected users of the Cloud have been contacted.\r\n\r\n## Details\r\n\r\nWhile snapshotting the task database, sending a task to Meilisearch could corrupt it. Index DBs were not affected, so manually rebuilding the task database fixes the corruption.\r\n\r\n\r\nBy @dureuill in #6160 \r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.35.0...v1.35.1","2026-02-16T17:01:17",{"id":205,"version":206,"summary_zh":207,"released_at":208},100129,"v1.35.0","Meilisearch v1.35.0 contains improvements to the observability of the search performance, a breaking change to the recently introduced `POST \u002Findexes\u002F\u003Cindex_uid>\u002Ffields` route, and other bugfixes and improvements.\r\n\r\n# 🌈 Improvements\r\n\r\n## Observe the search performance\r\n\r\nThe search routes accept a new field named `showPerformanceDetails`. When set to `true`, the search response contains a performance trace, allowing the user to better\r\nunderstand what takes time during a search query.\r\n\r\n**impacted routes:**\r\n- `POST \u002Findexes\u002F\u003Cindex_uid>\u002Fsearch`\r\n- `GET \u002Findexes\u002F\u003Cindex_uid>\u002Fsearch`\r\n- `POST \u002Fmulti-search`\r\n- `POST \u002Findexes\u002F\u003Cindex_uid>\u002Fsimilar`\r\n- `GET \u002Findexes\u002F\u003Cindex_uid>\u002Fsimilar`\r\n\r\n### Search \r\n\r\nroutes: `POST \u002Findexes\u002F\u003Cindex_uid>\u002Fsearch` and `GET \u002Findexes\u002F\u003Cindex_uid>\u002Fsearch`\r\n\r\n#### Request\r\n\r\nnew request parameters:\r\n- `showPerformanceDetails`: `true`\u002F`false` (boolean)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"q\": \"glass\",\r\n\t\"showPerformanceDetails\": true\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n#### Response\r\n\r\nnew response field:\r\n- `performanceDetails`: `{\"\u003Cspan>\": \"\u003Chuman_duration>\", .. }` (map)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"hits\": [\r\n\t\t\u002F\u002F hits ..\r\n\t],\r\n\t\"query\": \"glass\",\r\n\t\"processingTimeMs\": 5,\r\n\t\"limit\": 20,\r\n\t\"offset\": 0,\r\n\t\"estimatedTotalHits\": 1,\r\n\t\"requestUid\": \"\u003Cuuid>\",\r\n\t\"performanceDetails\": {\r\n\t\t\"wait for permit\": \"295.29µs\",\r\n\t\t\"search > tokenize\": \"436.67µs\",\r\n\t\t\"search > resolve universe\": \"649.00µs\",\r\n\t\t\"search > keyword search\": \"515.71µs\",\r\n\t\t\"search > format\": \"288.54µs\",\r\n\t\t\"search\": \"3.56ms\"\r\n\t}\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n### Multi-search\r\n\r\nroute: `POST \u002Fmulti-search`\r\n\r\n#### Request\r\n\r\nnew request parameters:\r\n- `queries.showPerformanceDetails`: `true`\u002F`false` (boolean)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\"queries\": [\r\n\t{\r\n\t\t\"indexUid\": \"\u003Cindex_uid>\",\r\n\t\t\"q\": \"glass\",\r\n\t\t\"showPerformanceDetails\": true\r\n\t}\r\n]\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n#### Response\r\n\r\nnew response field:\r\n- `results.performanceDetails`: `{\"\u003Cspan>\": \"\u003Chuman_duration>\", .. }` (map)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"results\": [\r\n\t\t{\r\n\t\t\t\"indexUid\": \"\u003Cindex_uid>\",\r\n\t\t\t\"hits\": [\r\n\t\t\t\t\u002F\u002F hits ..\r\n\t\t\t],\r\n\t\t\t\"query\": \"glass\",\r\n\t\t\t\"processingTimeMs\": 5,\r\n\t\t\t\"limit\": 20,\r\n\t\t\t\"offset\": 0,\r\n\t\t\t\"estimatedTotalHits\": 1,\r\n\t\t\t\"requestUid\": \"\u003Cuuid>\",\r\n\t\t\t\"performanceDetails\": {\r\n\t\t\t\t\"wait for permit\": \"295.29µs\",\r\n\t\t\t\t\"search > tokenize\": \"436.67µs\",\r\n\t\t\t\t\"search > resolve universe\": \"649.00µs\",\r\n\t\t\t\t\"search > keyword search\": \"515.71µs\",\r\n\t\t\t\t\"search > format\": \"288.54µs\",\r\n\t\t\t\t\"search\": \"3.56ms\"\r\n\t\t\t}\r\n\t\t}\r\n\t]\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n### Federated Search \r\n\r\nroute: `POST \u002Fmulti-search`\r\n\r\n#### Request\r\n\r\nnew request parameters:\r\n- `federation.showPerformanceDetails`: `true`\u002F`false` (boolean)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"federation\": { \"showPerformanceDetails\": true },\r\n\t\"queries\": [\r\n\t\t{\r\n\t\t\t\"indexUid\": \"\u003Cindex_uid>\",\r\n\t\t\t\"q\": \"glass\"\r\n\t\t}\r\n\t]\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n#### Response\r\n\r\nnew response field:\r\n- `performanceDetails`: `{\"\u003Cspan>\": \"\u003Chuman_duration>\", .. }` (map)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"hits\": [\r\n\t\t\u002F\u002F hits ..\r\n\t],\r\n\t\"query\": \"glass\",\r\n\t\"processingTimeMs\": 5,\r\n\t\"limit\": 20,\r\n\t\"offset\": 0,\r\n\t\"estimatedTotalHits\": 1,\r\n\t\"requestUid\": \"\u003Cuuid>\",\r\n\t\"performanceDetails\": {\r\n\t\t\"wait for permit\": \"213.83µs\",\r\n\t\t\"search > tokenize\": \"171.67µs\",\r\n\t\t\"search > resolve universe\": \"257.63µs\",\r\n\t\t\"search > keyword search\": \"577.71µs\",\r\n\t\t\"search > format\": \"114.96µs\",\r\n\t\t\"search > federation > wait for remote results\": \"62.71µs\",\r\n\t\t\"search > federation > merge results\": \"120.04µs\",\r\n\t\t\"search > federation > merge facets\": \"53.42µs\",\r\n\t\t\"search > federation\": \"237.04µs\",\r\n\t\t\"search\": \"289.08ms\"\r\n\t}\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n### Similar \r\n\r\nroutes: `POST \u002Findexes\u002F\u003Cindex_uid>\u002Fsimilar` and `GET \u002Findexes\u002F\u003Cindex_uid>\u002Fsimilar`\r\n\r\n#### Request\r\n\r\nnew request parameters:\r\n- `showPerformanceDetails`: `true`\u002F`false` (boolean)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"id\": 143,\r\n\t\"embedder\": \"manual\",\r\n\t\"showPerformanceDetails\": true\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n#### Response\r\n\r\nnew response field:\r\n- `performanceDetails`: `{\"\u003Cspan>\": \"\u003Chuman_duration>\", .. }` (map)\r\n\r\n\u003Cdetails>\r\n\u003Csummary>example\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n\t\"hits\": [\r\n\t\t\u002F\u002F hits ..\r\n\t],\r\n\t\"id\": \"143\",\r\n\t\"processingTimeMs\": \"[duration]\",\r\n\t\"limit\": 20,\r\n\t\"offset\": 0,\r\n\t\"estimatedTotalHits\": 4,\r\n\t\"performanceDetails\": {\r\n\t\t\"search > format\": \"244.92µs\",\r\n\t\t\"search\": \"1.25ms\"\r\n\t}\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\n\r\nBy @ManyTheFish in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6132\r\n\r\n## Stabilize multithreaded post-processing of facets and prefixes\r\n\r\nMultithreaded post-processing of facets and prefixes speeds-up indexing on multi-core machines.\r\n\r\nBefore v1.35.0, it could be disabled with an [experimental feature](https:\u002F\u002Fgithub.com\u002Forgs\u002Fmeilisearch\u002Fdiscussions\u002F862).\r\n\r\nMeilisearch v1.35.0 removes that experimental feature, resulting in the m","2026-02-02T09:57:03",{"id":210,"version":211,"summary_zh":212,"released_at":213},100130,"v1.34.3","## 🐛 Bug Fixes \r\n* Increase the auth store database size to 2 GiB so that we can index more keys by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6134\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.34.2...v1.34.3","2026-01-28T17:52:24",{"id":215,"version":216,"summary_zh":217,"released_at":218},100131,"v1.34.2","This patch fixes an accidental breaking change in v1.34.1 where Meilisearch would not start with a configuration file if `experimental_allowed_ip_networks` was not defined.\r\n\r\n- Meilisearch Cloud users do not need to update as they were not affected by this regression\r\n- We recommend that OSS users upgrade to v1.34.2\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.34.1...v1.34.2","2026-01-28T08:20:49",{"id":220,"version":221,"summary_zh":222,"released_at":223},100132,"v1.34.1","In Meilisearch v1.34.1, we released a security fix that affect web queries initiated by Meilisearch.\r\n\r\n# 🔐 Security \r\n\r\n- Cloud users: no action is needed. We found no evidence of exploitation on Meilisearch Cloud and the Cloud is protected at the infrastructure level.\r\n- Open-source users: if you allow untrusted users to configure webhooks, embedders or network of machines, we recommend you update to Meilisearch v1.34.1\r\n\r\nIn Meilisearch versions v1.8 to v1.34.0, a user with an API key with *write permissions* to the configuration of the Meilisearch instance could set up Meilisearch to send POST or GET requests to domains and IPs local to the private network of the Meilisearch instance, effectively bypassing the firewall. The vulnerability has not yet been assigned a CVE number; it has CVE Request 1975471 for CVE ID.\r\n\r\nMeilisearch v1.34.1 fixes the vulnerability by forbidding Meilisearch from making any requests to a host resolving to a non-global IP, in the sense of the [IANA IPv4 Special-Purpose Address Registry](https:\u002F\u002Fwww.iana.org\u002Fassignments\u002Fiana-ipv4-special-registry\u002Fiana-ipv4-special-registry.xhtml) or the [IANA IPv6 Special-Purpose Address Registry](https:\u002F\u002Fwww.iana.org\u002Fassignments\u002Fiana-ipv6-special-registry\u002Fiana-ipv6-special-registry.xhtml). If you need this functionality in your Meilisearch instance, you can set private IP networks as allowed with the `--experimental-allowed-ip-networks` parameter after reviewing the security implications.\r\n\r\n**This is a breaking change**, which is allowed for security reasons.\r\n\r\n## Allowing non-global IP networks\r\n\r\nThe `--experimental-allowed-ip-networks` CLI flag and the `MEILI_EXPERIMENTAL_ALLOWED_IP_NETWORKS` environment variable control the behavior of Meilisearch with regards to non-global IP networks, with the CLI flag taking precedence over the environment variable when both are specified.\r\n\r\n- When missing, the default is to reject all web requests resolving to a non-global IP.\r\n- When set to a comma-separated list of CIDR-formatted networks (e.g. `192.168.0.0\u002F16,10.0.0.0`), then web requests to the networks from the list will be permitted. Web requests to the non-global IPs not part of the list will still be rejected.\r\n- When set to `any`, all web requests will be permitted regardless of the target IP, similar to the behavior of Meilisearch v1.34.0 and lower. Use this option when you control both the machine and the configuration of the deployed Meilisearch instance.\r\n\r\n## Acknowledgments\r\n\r\nThanks to Gabriel Rodrigues (aka Texugo), for reporting this vulnerability and for helping us improve the security of Meilisearch.","2026-01-27T09:32:44",{"id":225,"version":226,"summary_zh":227,"released_at":228},100133,"v1.34.0","# 🌈 Improvements\r\n\r\n## Easy search over your network of machines\r\n\r\n### `useNetwork` field in `POST \u002Findexes\u002F{:indexUid}\u002Fsearch`\r\n\r\nThe search query object passed in the body of `POST \u002Findexes\u002F{:indexUid}\u002Fsearch` now accepts an optional boolean `useNetwork`. When present and set to `true`, the search is executed \"as-if\" it was a remote federated search over all remotes in the network.\r\n\r\nThat is, the following:\r\n\r\n\u003Cdetails>\r\n\u003Csummary>Search request\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\u002F\u002F POST \u002Findexes\u002Fmovies\u002Fsearch\r\n{\r\n  \"q\": \"Batman dark knight returns 1\",\r\n  \"filter\": \"genres IN [Action, Adventure]\",\r\n  \"facets\": [\"genres\"],\r\n  \"useNetwork\": true, \u002F\u002F ✨ NEW\r\n  \"limit\": 5\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\nIs executed by Meilisearch as if it was the following, assuming a network of 3 Meilisearch instances with names `\"0\", \"1\" and \"2\"`:\r\n\r\n\u003Cdetails>\r\n\u003Csummary>Equivalent multi-search request\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n\u002F\u002F POST \u002Fmulti-search\r\n{\r\n    \"federation\": {\r\n        \"limit\": 5,\r\n        \"facetsByIndex\": {\r\n            \"movies\": [\r\n                \"genres\"\r\n            ]\r\n        },\r\n        \"merge\": {}\r\n    },\r\n    \"queries\": [\r\n        {\r\n            \"indexUid\": \"movies\",\r\n            \"federationOptions\": {\r\n                \"remote\": \"0\"\r\n            },\r\n            \"q\": \"Batman dark knight returns 1\",\r\n            \"filter\": \"genres IN [Action, Adventure]\"\r\n        },\r\n        {\r\n            \"indexUid\": \"movies\",\r\n            \"federationOptions\": {\r\n                \"remote\": \"1\"\r\n            },\r\n            \"q\": \"Batman dark knight returns 1\",\r\n            \"filter\": \"genres IN [Action, Adventure]\"\r\n        },\r\n        {\r\n            \"indexUid\": \"movies\",\r\n            \"federationOptions\": {\r\n                \"remote\": \"2\"\r\n            },\r\n            \"q\": \"Batman dark knight returns 1\",\r\n            \"filter\": \"genres IN [Action, Adventure]\"\r\n        }\r\n    ]\r\n}\r\n```\r\n\r\n\u003C\u002Fdetails>\r\n\r\nResulting in:\r\n\r\n\u003Cdetails>\r\n\u003Csummary>Search Response\u003C\u002Fsummary>\r\n\r\n```jsonc\r\n{\r\n  \"hits\": [\r\n    {\r\n      \"id\": 123025,\r\n      \"title\": \"Batman: The Dark Knight Returns, Part 1\",\r\n      \"overview\": \"Batman has not been seen for ten years. A new breed of criminal ravages Gotham City, forcing 55-year-old Bruce Wayne back into the cape and cowl. But, does he still have what it takes to fight crime in a new era?\",\r\n      \"genres\": [\r\n        \"Action\",\r\n        \"Animation\",\r\n        \"Mystery\"\r\n      ],\r\n      \"poster\": \"https:\u002F\u002Fimage.tmdb.org\u002Ft\u002Fp\u002Fw500\u002FkkjTbwV1Xnj8wBL52PjOcXzTbnb.jpg\",\r\n      \"release_date\": 1345507200,\r\n      \"_federation\": {\r\n        \"indexUid\": \"mieli\",\r\n        \"queriesPosition\": 2,\r\n        \"weightedRankingScore\": 0.9894586894586894,\r\n        \"remote\": \"2\"\r\n      }\r\n    },\r\n    {\r\n      \"id\": 142061,\r\n      \"title\": \"Batman: The Dark Knight Returns, Part 2\",\r\n      \"overview\": \"Batman has stopped the reign of terror that The Mutants had cast upon his city.  Now an old foe wants a reunion and the government wants The Man of Steel to put a stop to Batman.\",\r\n      \"genres\": [\r\n        \"Action\",\r\n        \"Animation\",\r\n        \"Mystery\"\r\n      ],\r\n      \"poster\": \"https:\u002F\u002Fimage.tmdb.org\u002Ft\u002Fp\u002Fw500\u002FarEZYd6uMOFTILne9Ux0A8qctMe.jpg\",\r\n      \"release_date\": 1357171200,\r\n      \"_federation\": {\r\n        \"indexUid\": \"mieli\",\r\n        \"queriesPosition\": 1,\r\n        \"weightedRankingScore\": 0.9894558963186414,\r\n        \"remote\": \"1\"\r\n      }\r\n    },\r\n    {\r\n      \"id\": 16234,\r\n      \"title\": \"Batman Beyond: Return of the Joker\",\r\n      \"overview\": \"The Joker is back with a vengeance, and Gotham's newest Dark Knight needs answers as he stands alone to face Gotham's most infamous Clown Prince of Crime.\",\r\n      \"genres\": [\r\n        \"Animation\",\r\n        \"Family\",\r\n        \"Action\",\r\n        \"Science Fiction\"\r\n      ],\r\n      \"poster\": \"https:\u002F\u002Fimage.tmdb.org\u002Ft\u002Fp\u002Fw500\u002F7RlBs0An83fqAuKfwH5gKMcqgMc.jpg\",\r\n      \"release_date\": 976579200,\r\n      \"_federation\": {\r\n        \"indexUid\": \"mieli\",\r\n        \"queriesPosition\": 1,\r\n        \"weightedRankingScore\": 0.9427964918160996,\r\n        \"remote\": \"1\"\r\n      }\r\n    },\r\n    {\r\n      \"id\": 155,\r\n      \"title\": \"The Dark Knight\",\r\n      \"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.\",\r\n      \"genres\": [\r\n        \"Drama\",\r\n        \"Action\",\r\n        \"Crime\",\r\n        \"Thriller\"\r\n      ],\r\n      \"poster\": \"https:\u002F\u002Fimage.tmdb.org\u002Ft\u002Fp\u002Fw500\u002FqJ2tW6WMUDux911r6m7haRef0WH.jpg\",\r\n      \"release_date\": 1216166400,\r\n      \"_federation\": {\r\n        \"indexUid\": \"mieli\",\r\n        \"queriesPosition\": 1,\r\n        \"weightedRankingScore\": 0.5784178187403994,\r\n        \"remote\": \"1\"\r\n      }\r\n    },\r\n    {\r\n      \"id\": 49026,\r\n      \"title\": \"The Dark Knight Rises\",\r\n      \"overview\":","2026-01-26T09:29:45",{"id":230,"version":231,"summary_zh":232,"released_at":233},100134,"v1.33.1","In Meilisearch v1.33.1, we released a security fix that affected the dump import, improvements to vector store relevance in massive databases, and a fix related to ranking scores.\r\n\r\n### 🔐 Security Fix\r\n\r\n- Cloud users: you don't need to do anything. We found no evidence of exploitation of this vulnerability on Meilisearch Cloud.\r\n- Open-source users: if you allow importing dumps from an untrusted source, we recommend you update to v1.33.1\r\n\r\nAll versions of Meilisearch before v1.33.0 are vulnerable to a path traversal vulnerability involving the dump import functionality.\r\n\r\nImporting a specially crafted dump could result in giving access to the Meilisearch instance to arbitrary, specifically formatted files, present on the file system of the Meilisearch instance.\r\n\r\n### ✨ Enhancements\r\n\r\n* We updated the vector store to trigger linear scanning even on bigger databases, leading to improved performance and so better result quality when the search cutoff is reached. This applies in particular when the number of filtered candidates is small relative to the number of documents in the index by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6113.\r\n\r\n### 🐛 Bug Fixes\r\n\r\n* We fixed a bug where only the first non-blocking buckets were taken for the non-final ranking rules. This improves the quality of search results when the search cutoff triggers, especially when vector search and a sort are involved by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6113.\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.33.0...v1.33.1","2026-01-20T14:24:56",{"id":235,"version":236,"summary_zh":237,"released_at":238},100135,"v1.33.0","### ✨ Enhancement\r\n\r\n- **Add `\u002Ffields` route to get all the fields of an index** by @YoEight in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6082\r\n    Adds a new POST `\u002Findexes\u002F{indexUid}\u002Ffields` endpoint that returns detailed metadata about all fields in an index. This endpoint provides comprehensive information about each field's configuration, including display, search, filtering, and localization settings.\r\n\r\n- **Implement parallel cleanup of old field IDs** by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6100\r\n    We reduce the time required to perform the dumpless upgrade for instances before v1.32.0 by multi-threading database fetches. By doing that, we noticed improvements from 2 hours and 50 minutes to a bit less than 7 minutes.\r\n\r\n- **Bump hannoy to 0.1.4-nested-rtxns** by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6103\r\n    We updated our internal vector store to speed up the dumpless upgrade by improving the graph rebuilding and improving the speed and relevance of the search by using the explore factor as a limit to stop document searches rather than the query limit.\r\n\r\n### 🪲 Bug fixes\r\n\r\n- **Meilisearch can now rescale when the index reaches 2 TB** by @Vipul-045 in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6095\r\n\r\n### 🔒 Security\r\n\r\n- **Upgrade mini-dashboard to benefit security vulnerability fixes** by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6091\r\n\r\n### 🔩 Miscellaneous\r\n\r\n- Fix tests by @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6090\r\n- Add verbose OpenAPI schema descriptions for documentation by @qdequele in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6071\r\n- Add code samples to the generated openAPI file by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6028\r\n\r\nThank you @Vipul-045 for your first contribution ❤️","2026-01-19T09:33:12",{"id":240,"version":241,"summary_zh":242,"released_at":243},100136,"v1.32.2","## 🐛 Bug fixes\r\n* Do not panic when doing a dumpless upgrade on empty indexes with configured embeddings by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6102\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.32.1...v1.32.2","2026-01-15T09:49:07",{"id":245,"version":246,"summary_zh":247,"released_at":248},100137,"v1.32.1","## 🌈 Improvements\r\n\r\n### Skip cleaning up the field-ID-based databases\r\n Introduce a `MEILI_EXPERIMENTAL_DISABLE_FID_BASED_DATABASES_CLEANUP` env var to opt out of the field ID-based database cleanup when upgrading a Meilisearch from versions inferior to 1.32.0.\r\n>  by @ManyTheFish in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6096\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.32.0...v1.32.1","2026-01-14T11:24:03",{"id":250,"version":251,"summary_zh":252,"released_at":253},100138,"v1.32.0","## 🌈 Improvements\r\n\r\n### Log Search performance trace\r\n Introduces comprehensive progress tracking and logging for search operations in Meilisearch. It adds detailed timing information for each step of the search process, enabling better observability and performance analysis.\r\n>  by @ManyTheFish in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6072\r\n\r\n### Extract document operations from payloads in parallel\r\nWe accelerate document indexing by processing a large number of tasks in batches or a large number of records in parallel. We expedited the preparation of the payloads by extracting the various changes and assigning internal IDs in parallel. We achieved a 7x speedup on a four-million-document insertion using four CPUs, and the performance scales with the number of CPUs.\r\n\r\nThe `indexedDocuments` field in tasks using skipCreation no longer precisely reflects the number of document operations performed, specifically for `POST` and `PUT` operations. This count may be higher than the actual number of operations, but it doesn't affect the computation; only the reported count is impacted. We prioritize speed over perfect accuracy here, and the documents are still correctly indexed as before.\r\n> by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6080\r\n\r\n## 🐛 Bug fixes\r\n\r\n### Vector sort: Bucket documents with same similarity\r\nFixed vector sort bucketing so documents with identical similarity scores are grouped together, ensuring subsequent ranking rules are applied correctly.\r\n> by @dureuill in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6081\r\n\r\n### Properly Delete Documents from FID-Based Databases\r\nFixes a bug where changing searchableAttributes from [\"*\"] to a subset of fields left orphaned data in fid-based databases, causing corruption and warnings during search.\r\n> by @ManyTheFish in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6076\r\n\r\n### Rebuild the graph links when dumpless-upgrading\r\nBumps [hannoy to v0.1.3-nested-rtxns](https:\u002F\u002Fgithub.com\u002Fnnethercott\u002Fhannoy\u002Freleases\u002Ftag\u002Fv0.1.3-nested-rtxns)￼, which fixes graph-related recall issues and adds a method to rebuild graph links to recover previously malformed graphs. Also fixes a minor issue in the dumpless upgrade flow where the upgrade description was not displayed correctly and related operations were not properly associated with the upgrade.\r\n> by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6055\r\n\r\n## 🛠️ Maintenance and Misc.\r\n\r\n### Update JS SDKs tests to use `pnpm` instead of `yarn`\r\nUpdated the JavaScript SDK tests to use pnpm instead of yarn in CI workflows, switching the package manager across test configurations to ensure the SDK test suite runs correctly and consistently with the current tooling.\r\n> by @Strift in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6075\r\n\r\n### Adapt JS tests in SDK tests CI\r\nUpdated the SDK tests CI workflow for the JavaScript SDKs\r\n> by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6050\r\n\r\n### Bump lru from 0.16.2 to 0.16.3\r\nFix Stacked Borrows violation in `IterMut`.\r\n> by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6087\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fcompare\u002Fv1.31.0...v1.32.0","2026-01-12T13:25:43",{"id":255,"version":256,"summary_zh":257,"released_at":258},100139,"v1.31.0","# 🌈 Improvements\r\n\r\n## 🗄️ [Enterprise Edition] Make the S3-streaming snapshots an Enterprise Edition feature\r\n\r\nThe recently introduced S3-streaming snapshots feature is now available as an Enterprise Edition feature. From now on, you'll need a license to use this feature when using Meilisearch as a self-hosted solution. Note that this version introduces a breaking change regarding the S3-streaming snapshot feature, which is no longer available in the Community Edition; however, on-disk snapshots remain accessible. You can read our BUSL license for contact information, if you like. Note that if you are using the Community Edition of Meilisearch between [version 1.25](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Freleases\u002Ftag\u002Fv1.25.0) and this release, you can freely use the S3 Streaming feature without an Enterprise Edition license.\r\n\r\n> by @Kerollmops in [https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6057](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6057)\r\n\r\n## 🔏 [Enterprise Edition] Support AWS IRSA to authenticate to S3 for snapshotting\r\n\r\nWe just introduced support for IRSA authentication to do snapshots on AWS. IRSA allows the use of short-lived access and secret keys to upload snapshots through S3. This feature is available under the Enterprise Edition and can be accessed through two experimental CLI parameters.\r\n\r\n>  by @paulden in [https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6044](https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6044)\r\n\r\n## ✍️ Allow strict document update without creating missing documents\r\nAdds an optional `skipCreation` boolean query parameter to `POST` and `PUT` on `\u002Findexes\u002F{index}\u002Fdocuments`. When set to `true`, documents that don't exist in the index are silently ignored rather than created. Default is `false`, preserving existing behavior.\r\n\r\n>  by @YoEight in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6053\r\n\r\n## 🐛 Bug fixes\r\n* Fix actix payload error handling by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6052\r\n* Bump hannoy to v0.1.2 by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6063\r\n\r\n## 🛠️ Maintenance and Misc.\r\n* Run windows in the PR CI by @Kerollmops in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6058\r\n* Make CI test titles more human friendly by @curquiza in https:\u002F\u002Fgithub.com\u002Fmeilisearch\u002Fmeilisearch\u002Fpull\u002F6062\r\n","2025-12-22T16:21:02"]