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

自定义排序规则可以在搜索结果相关性相同的情况下,优先展示特定文档。

升序与降序排序规则

Meilisearch 支持两种类型的自定义规则:升序排序和降序排序。

要添加自定义排序规则,需要指定属性名称后跟冒号(:),然后使用 asc 表示升序或 desc 表示降序。

  • 升序排序(按属性值从小到大排序):attribute_name:asc

  • 降序排序(按属性值从大到小排序):attribute_name:desc

该属性在所有文档中必须具有数字或字符串值

您可以通过更新设置端点更新排序规则端点将此规则添加到现有排序规则列表中。

示例

假设你有一个电影数据集。文档中包含 release_date 字段(值为时间戳)和 movie_ranking 字段(表示电影排名的整数值)。

以下示例创建了一条规则,使年代较久的电影比新近电影具有更高相关性。1999年发布的电影会排在2020年发布的电影之前。

release_date:asc

以下示例将创建一条规则,使排名较高的电影比排名较低的电影更具相关性。排名较高的电影会优先显示。

movie_ranking:desc

以下数组包含了所有内置排序规则,并将自定义规则放在处理顺序的末尾:

[
  "words",
  "typo",
  "proximity",
  "attribute",
  "sort",
  "exactness",
  "release_date:asc",
  "movie_ranking:desc"
]

搜索时排序与自定义排序规则

Meilisearch 允许用户通过使用 sort 搜索参数在查询时定义排序顺序。虽然排序和自定义排序规则有部分重叠,但两者确实有不同的用途。

一般来说,当您希望允许用户定义他们想优先看到哪种类型的结果时,sort 会非常有用。sort 的一个典型用例是创建一个电商网站界面,让客户可以按商品价格的升序或降序来排序商品。

而自定义排序规则一旦配置就会始终生效,适用于您希望提升某些特定类型结果的场景。自定义排序规则的一个典型用例是确保电商网站中的打折商品始终出现在搜索结果的前列。

Meilisearch 本身不支持对特定文档进行置顶、固定或提升权重以使其比其他搜索结果更突出的功能。如需实现这些功能,请参考 Meilisearch 博客文章:使用 React InstantSearch 实现置顶搜索结果文档权重提升 中的解决方案。