可显示和可搜索的属性

    默认情况下,每当向 Meilisearch 添加文档时,其中找到的所有新属性都会自动添加到两个列表中

    默认情况下,文档中的每个字段都是可显示可搜索的。这些属性可以在设置中修改。

    显示的字段

    属性添加到displayedAttributes列表中的字段,将在每个匹配的文档中显示

    搜索返回的文档仅包含显示的字段。如果某个字段属性不在显示的属性列表中,则该字段不会添加到返回的文档中。

    默认情况下,所有字段属性都设置为显示.

    示例

    假设您管理一个包含电影信息的数据库。通过添加以下设置,搜索返回的文档将包含titleoverviewrelease_dategenres字段。

    curl \
      -X PUT 'https://127.0.0.1:7700/indexes/movies/settings/displayed-attributes' \
      -H 'Content-Type: application/json' \
      --data-binary '[
          "title",
          "overview",
          "genres",
          "release_date"
        ]'

    可搜索字段

    一个字段可以是可搜索的,也可以是不可搜索的。

    当您执行搜索时,所有可搜索字段都会被检查以匹配查询词,并用于评估文档的相关性,而不可搜索的字段则会被完全忽略。默认情况下,所有字段都是可搜索的。

    不可搜索的字段最适用于与搜索体验无关的内部信息,例如 URL、销售额或仅用于对结果排序的评分。

    提示

    即使您将一个字段设置为不可搜索,它仍然会存储在数据库中,并且可以稍后再次设置为可搜索。

    searchableAttributes 列表

    Meilisearch 使用一个有序列表来确定哪些属性是可搜索的。属性在此列表中出现的顺序还决定了它们对相关性的影响,从影响最大到影响最小。

    换句话说,searchableAttributes 列表有两个用途

    1. 它指定了哪些字段是可搜索的
    2. 它规定了属性排名顺序

    searchableAttributes 列表有两种可能的模式。

    默认:自动

    默认情况下,所有属性都按照它们出现的顺序自动添加到searchableAttributes列表中。这意味着初始顺序将基于索引的第一个文档中的属性顺序,在后续文档中找到的每个新属性都会添加到此列表的末尾。

    此默认行为由 searchableAttributes 值为 ["*"] 表示。要验证您当前 searchableAttributes 列表的值,请使用获取可搜索属性端点

    如果您想将可搜索属性列表恢复为默认行为,请searchableAttributes 设置为空数组 []或使用重置可搜索属性端点

    手动

    您可能希望将某些属性设置为不可搜索,或者在文档索引之后更改属性排名顺序。为此,请按照所需的顺序放置属性,并使用更新可搜索属性端点发送更新后的列表。

    手动更新 searchableAttributes 列表后,除非设置被重置,否则后续的新属性将不再自动添加

    警告

    由于实现错误,手动更新 searchableAttributes 将更改 JSON 响应中文档字段的显示顺序。此行为不一致,将在未来的版本中修复。

    示例

    假设您管理一个包含以下字段的电影数据库:idoverviewgenrestitlerelease_date。这些字段都包含有用的信息。但是,有些字段比其他字段更适合搜索。要使 idrelease_date 字段不可搜索,并按重要性对剩余字段重新排序,您可以按以下方式更新可搜索属性列表。

    curl \
      -X PUT 'https://127.0.0.1:7700/indexes/movies/settings/searchable-attributes' \
      -H 'Content-Type: application/json' \
      --data-binary '[
          "title",
          "overview",
          "genres"
        ]'

    在搜索时自定义搜索的属性

    默认情况下,所有查询都会搜索 searchableAttributes 列表中的所有属性。使用attributesToSearchOn 搜索参数将特定查询限制为索引的 searchableAttributes 的子集。

    数据存储

    所有字段都存储在数据库中。此行为无法更改

    因此,即使某个字段同时从 displayedAttributes 列表和 searchableAttributes 列表中丢失,它仍然存储在数据库中,并且可以随时添加到其中一个或两个列表中。