/facet-search 路由允许您搜索分面(facet)值。分面搜索支持前缀搜索错字容忍。返回的结果会按字典序升序排列。您可以通过 faceting 索引设置中的 sortFacetValuesBy 属性来配置分面值的排序方式。

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

在内部,Meilisearch 将数字表示为 float64。这意味着它们缺乏精度且可能有多种表示方式,导致难以有效搜索分面值。

执行分面搜索

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

POST
/indexes/{index_uid}/facet-search

此端点需要先显式将属性添加到 filterableAttributes 列表才能正常工作。在我们的专用指南中了解更多关于分面的信息。

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

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

请求体

名称类型默认值描述
facetName *字符串null需要搜索值的分面(facet)名称
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
}