我从未使用过搜索引擎,还能使用 Meilisearch 吗?

当然可以!使用 Meilisearch 不需要任何 ElasticSearch 或 Solr 的知识。

Meilisearch 非常易于使用,适合各种水平的开发者。

快速体验了解 Meilisearch 的基础知识!

我们还提供了大量工具,包括 SDKs,帮助您轻松将 Meilisearch 集成到项目中。我们每天都在添加新工具!

此外,如果需要任何帮助,您可以联系我们

如何判断 Meilisearch 是否完全适合我的使用场景?

由于 Meilisearch 是一个开源且易于使用的工具,您可以使用自己的数据尝试它。按照这个指南快速开始!

此外,我们发布了Meilisearch 与其他搜索引擎的对比,旨在提供 Meilisearch 替代方案的概览。

我尝试添加文档但一直收到 400 - Bad Request 响应

400 - Bad request 响应通常意味着您的数据格式不符合预期。可能包含多余的逗号、不匹配的括号、缺失的引号等。Meilisearch API 接受 JSON、CSV 和 NDJSON 格式。

添加或替换文档时,即使只有一个新文档,也必须将其包含在数组中。

我已上传文档,但在索引中搜索不到结果

您的文档上传可能失败了。要了解原因,请使用返回的 taskUid 检查文档添加任务的状态。如果任务失败,响应中应包含一个 error 对象。

以下是一个失败任务的示例:

{
    "uid": 1,
    "indexUid": "movies",
    "status": "failed",
    "type": "documentAdditionOrUpdate",
    "canceledBy": null,
    "details": {
            "receivedDocuments": 67493,
            "indexedDocuments": 0
    },
    "error": {
        "message": "Document does not have a `:primaryKey` attribute: `:documentRepresentation`.",
        "code": "internal",
        "type": "missing_document_id",
        "link": "https://docs.meilisearch.com/errors#missing-document-id",
    },
    "duration": "PT1S",
    "enqueuedAt": "2021-08-10T14:29:17.000000Z",
    "startedAt": "2021-08-10T14:29:18.000000Z",
    "finishedAt": "2021-08-10T14:29:19.000000Z"
}

请检查错误信息以获取更多详情。

终止 Meilisearch 进程是否安全?

终止 Meilisearch 是安全的,即使在处理过程中(例如:添加一批文档时)。当您重启服务器时,它将从头开始执行任务。 更多信息请参阅异步操作指南

你们是否提供 Meilisearch 及其集成工具的公开路线图?

是的,由于 Meilisearch 及其集成工具是开源的,我们为计划实现的主要功能维护了一个公开路线图

要了解更准确的功能和问题详情,所有内容都在我们的 GitHub 仓库 的 issues 中有详细说明。

托管 Meilisearch 实例的推荐配置要求是什么?

简短回答:

托管 Meilisearch 实例的推荐配置取决于多种因素,例如文档数量、文档大小、所需的筛选/排序条件数量等。作为快速估算的起点,建议使用磁盘空间至少是数据集大小十倍的机器。

详细解答:

文档索引是一个复杂的过程,因此很难准确预估 Meilisearch 数据库的大小和内存占用。在优化实例时需要注意以下几个方面:

内存使用

以下两种情况会导致内存(RAM)使用量激增:

  1. 添加文档时
  2. 更新索引设置时(如果索引已包含文档)

为了降低内存消耗和索引时间,请遵循以下最佳实践:始终在添加文档前更新索引设置。这样可以避免不必要的双重索引。

磁盘占用

以下因素会显著影响数据库大小(排名不分先后):

  • 文档数量
  • 文档大小
  • 可搜索字段数量
  • 可筛选字段数量
  • 每次更新的数据量
  • 数据集中不同词汇的数量

需特别注意高度多语言的数据集和包含大量唯一词汇(如ID或URL)的数据集,它们会降低搜索速度并大幅增加数据库体积。如果确实存在ID或URL字段,除非它们需要作为搜索条件,否则请将其设为不可搜索

搜索速度

由于 Meilisearch 使用内存映射搜索速度取决于 RAM 与数据库大小的比例。换句话说:

  • 大型数据库 + 少量 RAM => 搜索速度慢
  • 小型数据库 + 充足 RAM => 闪电般快速搜索

Meilisearch 还使用磁盘空间作为虚拟内存。这部分磁盘空间并不等同于数据库大小,而是通过允许引擎突破物理 RAM 的限制,为其提供速度和灵活性。

目前,CPU 核心数量对索引或搜索速度没有直接影响。但是,为引擎提供的核心越多,它同时能处理的搜索查询就越多

加速 Meilisearch

Meilisearch 设计为快速响应(≤50ms 响应时间),因此通常不需要额外加速。但如果发现 Meilisearch 实例查询缓慢,有两种主要方法可以提升搜索性能:

  1. 增加 RAM(或虚拟内存)容量
  2. 减小数据库大小

通常我们推荐前者。但如果需要减小数据库大小,请注意:

  • 相关性规则越多 => 数据库越大
    • 仅邻近度排序规则就可能占数据库大小的近 80%
  • filterableAttributes添加大量属性也会消耗大量磁盘空间
  • 多语言数据集成本高昂,建议按语言拆分数据集——每个索引对应一种语言
  • 停用词对减小数据库大小至关重要
  • 并非所有属性都需要设为可搜索字段。避免为唯一 ID 建立索引。

为什么 Meilisearch 会向 Segment 发送数据?Meilisearch 会追踪用户吗?

Meilisearch 绝不会追踪或识别个人用户。尽管如此,我们确实会使用 Segment 来收集关于用户趋势、功能使用情况和错误的匿名数据。

您可以在我们的遥测页面上了解更多关于我们收集哪些指标、为何收集这些指标以及如何禁用遥测的信息。透明度和隐私问题对我们非常重要,因此如果您认为我们在这方面有所欠缺,请提交问题或发送邮件至我们的专用邮箱:privacy@meilisearch.com