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 不提供原生支持来提升、置顶和增强特定文档,使其比其他搜索结果显示得更突出。有关使用 React InstantSearch 实现推广搜索结果文档增强的变通方法,请参阅这些 Meilisearch 博客文章。