Meilisearch 中有两种排序规则:内置排序规则和自定义排序规则。本文主要介绍使用和配置内置排序规则的核心内容。

内置排序规则是 Meilisearch 相关性计算的核心。

内置排序规则列表

Meilisearch 包含以下六种内置排序规则(按默认顺序排列):

[
  "words",
  "typo",
  "proximity",
  "attribute",
  "sort",
  "exactness"
]

根据需求,您可以调整这个顺序。使用更新设置端点更新排序规则端点即可实现。

1. Words(词频)

根据匹配查询词项的递减数量排序。优先返回包含所有查询词项的文档。

words 规则从右向左处理查询字符串,因此查询词项的顺序会影响结果排序。

例如,搜索 batman dark knight 时,words 规则会首先返回包含全部三个词项的文档,其次是仅包含 batmandark 的文档,最后是仅包含 batman 的文档。

2. Typo(拼写错误)

根据拼写错误递增数量排序。优先返回与查询词项匹配且拼写错误较少的文档。

3. Proximity(邻近度)

根据匹配查询词项之间的递增距离排序。优先返回查询词项紧密相邻且顺序与查询字符串一致的文档。

可以降低该排序规则的精度。这可能会显著提升索引性能。在少数使用场景中,降低精度也可能导致多词查询的相关性下降。

4. 属性

结果按照 属性排序规则 进行排序。优先返回在更重要属性中包含查询词的文档。

同时需要注意,属性开头包含查询词的文档会被认为比属性末尾包含查询词的文档更相关。

5. 排序

结果 根据查询时决定的参数 进行排序。当 sort 排序规则处于较高位置时,排序是穷尽的:结果的相关性会降低,但会更严格遵循用户定义的排序顺序。当 sort 处于较低位置时,排序是相关性优先的:结果会非常相关,但可能不总是遵循用户定义的顺序。

与其他排序规则不同,sort 规则仅在查询包含 sort 搜索参数 时生效。如果搜索请求不包含 sort,或其值无效,该规则将被忽略。

6. 精确度

结果按照 匹配词与查询词的相似度 进行排序。优先返回包含与查询词完全相同的术语的文档。

示例