本指南将介绍高效索引数据和加速索引过程的一些最佳实践。

定义可搜索属性

审查您的可搜索属性列表,并确保它只包含您希望检查查询词匹配的字段。这通过从数据库中删除不相关的数据来提高相关性和搜索速度。它还将使您的磁盘使用量保持在必要的最低限度。 默认情况下,所有文档字段都是可搜索的。Meilisearch 需要索引的字段越少,索引过程就越快。

审查可筛选和可排序属性

某些文档字段对于筛选排序结果是必需的,但它们不需要是可搜索的。通常,数字和布尔字段属于此类。务必审查您的可搜索属性列表,并移除任何仅用于筛选或排序的字段。

在添加文档之前配置索引

创建新索引时,首先配置其设置,然后才添加文档。无论何时更新诸如排名规则之类的设置,Meilisearch 都会触发所有文档的重新索引。这可能是一个耗时的过程,尤其是在您拥有大型数据集时。因此,最好在索引数据之前定义排名规则和其他设置。

优化文档大小

文档越小,处理速度越快,因此请务必从文档中删除任何不必要的数据。当文档字段在可搜索可筛选可排序可显示属性列表中缺失时,最好将其从文档中删除。此外,考虑使用 brdeflategzip 等方法压缩数据。请参阅支持的编码格式参考

偏好更大的 HTTP 有效负载

单个大型 HTTP 有效负载比多个小型有效负载处理速度更快。例如,将相同的 100,000 个文档分两批(每批 50,000 个文档)添加,将比分四批(每批 25,000 个文档)添加更快。默认情况下,Meilisearch 将最大有效负载大小设置为 100MB,但如果需要,您可以更改此值
更大的有效负载会消耗更多的 RAM。如果实例需要比机器当前可用内存更多的内存,则可能会崩溃。

保持 Meilisearch 最新

确保您的 Meilisearch 实例保持最新,以受益于最新改进。您可以在GitHub 上查看我们所有引擎版本的列表
有关索引工作原理的更多信息,请参阅这篇关于索引最佳实践的博客文章

不要将 Meilisearch 用作您的主数据库

Meilisearch 针对信息检索进行了优化,但并非设计用于作为您的主数据容器。您添加的文档越多,索引和搜索所需的时间就越长。只索引您希望在搜索时检索的文档。

为多种语言创建单独的索引

如果您有多种语言的数据集,请为每种语言创建一个单独的索引。

移除 I/O 操作限制

确保您的机器上没有 I/O 操作限制。云提供商(如AWS 的 Amazon EBS 服务)施加的限制可能会严重影响索引性能。

考虑升级到配备 SSD、更多 RAM 和多线程处理器的机器

如果您已遵循本指南中的先前提示,但索引时间仍然很慢,请考虑升级您的机器。 索引是一个内存密集型和多线程操作。可用的内存和处理器核心越多,Meilisearch 索引新文档的速度就越快。当尝试提高索引速度时,使用具有更多处理器核心的机器比增加 RAM 更有效。 由于 Meilisearch 的工作方式,最好避免使用 HDD(硬盘驱动器),因为它们很容易成为性能瓶颈。 如果您在为 AI 驱动的搜索索引文档时遇到性能问题,请考虑为您的嵌入器启用二进制量化。二进制量化通过用 1 位值表示每个维度来压缩向量。这会降低语义搜索结果的相关性,但会大大提高性能。 二进制量化最适用于包含超过 100 万个文档并使用超过 1400 个维度的模型的大型数据集。
激活二进制量化是不可逆的。一旦启用,Meilisearch 会转换所有向量并丢弃所有不适合 1 位的向量数据。恢复向量原始值的唯一方法是在新的嵌入器中重新向量化整个索引。
© . This site is unofficial and not affiliated with Meilisearch.