/facet-search 路由允许您搜索分面值。分面搜索支持前缀搜索容错处理。返回的匹配项按字典顺序升序排列。您可以使用 faceting 索引设置的 sortFacetValuesBy 属性来配置分面的排序方式。

Meilisearch 不支持对数字进行分面搜索。请将数字分面转换为字符串以使其可搜索。

在内部,Meilisearch 将数字表示为 float64。这意味着它们缺乏精度,并且可以用不同的方式表示,从而难以有效地搜索分面值。

在给定分面中搜索分面值。

POST
/indexes/{index_uid}/facet-search

如果不首先将属性明确添加到 filterableAttributes 列表中,此端点将无法工作。在我们的专门指南中了解更多关于分面的信息。

Meilisearch 的分面搜索不支持多词分面,并且只考虑 facetQuery 中的第一个词。

例如,搜索 Jane 将返回 Jane Austen,但搜索 Austen 则不会返回 Jane Austen

请求体

名称类型默认值描述
facetName *字符串null要搜索分面值的属性名称
facetQuery字符串null给定分面值的搜索查询。如果未指定 facetQuery,Meilisearch 将返回搜索分面的所有分面值,限制为 100 个
q字符串""查询字符串
filter字符串*null根据属性值过滤查询
matchingStrategy字符串"last"用于匹配文档中查询词的策略
attributesToSearchOn字符串数组null将搜索限制在指定属性上
exhaustiveFacetCount布尔值false返回分面的详尽计数,上限由 maxTotalHits 定义。

响应

名称类型描述
facetHits.value字符串facetQuery 匹配的分面值
facetHits.count整数具有与 value 匹配的分面值的文档数量
facetQuery字符串原始的 facetQuery
processingTimeMs数字查询的处理时间

示例

curl \
  -X POST 'MEILISEARCH_URL/indexes/books/facet-search' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "facetQuery": "fiction",
    "facetName": "genres",
    "filter": "rating > 3"
  }'

响应:200 Ok

{
  "facetHits": [
    {
      "value": "fiction",
      "count": 7
    }
  ],
  "facetQuery": "fiction",
  "processingTimeMs": 0
}