显示与可搜索属性
显示与可搜索属性定义了 Meilisearch 在成功查询后返回的数据内容,以及搜索时需要考虑的字段。了解如何配置这些属性有助于提升应用程序性能。
默认情况下,每当文档被添加到 Meilisearch 时,其中发现的所有新属性都会自动添加到两个列表中:
displayedAttributes
:文档中显示的字段属性searchableAttributes
:用于匹配查询词的搜索属性值
默认情况下,文档中的每个字段都是可显示且可搜索的。这些属性可以在设置中进行修改。
显示字段
添加到 displayedAttributes
列表中的属性字段会在每个匹配文档中显示。
搜索返回的文档仅包含显示字段。如果某个字段属性不在显示属性列表中,则该字段不会出现在返回的文档中。
默认情况下,所有字段属性都设置为可显示。
示例
假设您管理一个包含电影信息的数据库。通过添加以下设置,搜索返回的文档将包含 title
、overview
、release_date
和 genres
字段。
可搜索字段
字段可以是可搜索或不可搜索的。
当执行搜索时,所有可搜索字段都会被检查是否匹配查询词,并用于评估文档相关性,而不可搜索字段则会被完全忽略。默认情况下,所有字段都是可搜索的。
不可搜索字段最适合用于与搜索体验无关的内部信息,例如仅用于排序结果的 URL、销售数字或评分。
即使您将某个字段设为不可搜索,它仍会存储在数据库中,并且可以在以后重新设为可搜索。
searchableAttributes
列表
Meilisearch 使用一个有序列表来确定哪些属性是可搜索的。这个列表中属性的出现顺序也决定了它们对相关性的影响程度,从影响最大到最小。
换句话说,searchableAttributes
列表有两个作用:
- 指定哪些字段是可搜索的
- 决定属性排序顺序
searchableAttributes
列表有两种可能的模式。
默认:自动模式
默认情况下,所有属性都会按照出现顺序自动添加到 searchableAttributes
列表中。 这意味着初始顺序将基于第一个被索引文档中的属性顺序,后续文档中发现的新属性会被追加到这个列表的末尾。
这种默认行为通过 searchableAttributes
值为 ["*"]
来表示。要验证当前 searchableAttributes
列表的值,可以使用获取可搜索属性接口。
如果你想将可搜索属性列表恢复为这种默认行为,可以将 searchableAttributes
设为空数组 []
或使用重置可搜索属性接口。
手动设置
在某些情况下,您可能希望将某些属性设为不可搜索,或者在文档建立索引后调整属性排序规则。为此,您需要按照期望的顺序排列属性,并通过更新可搜索属性接口提交更新后的列表。
请注意:手动更新 searchableAttributes
列表后,后续新增的属性将不再自动加入可搜索列表,除非您重置相关设置。
由于实现上的一个缺陷,手动更新 searchableAttributes
会改变 JSON 响应中文档字段的显示顺序。这一不一致行为将在未来版本中修复。
示例
假设您管理着一个电影数据库,包含以下字段:id
、overview
、genres
、title
、release_date
。虽然这些字段都包含有用信息,但某些字段对搜索更有价值。若要将 id
和 release_date
设为不可搜索,并按重要性重新排序剩余字段,您可以按以下方式更新可搜索属性列表:
在搜索时自定义搜索属性
默认情况下,所有查询都会搜索 searchableAttributes
列表中的所有属性。您可以使用attributesToSearchOn
搜索参数来限制特定查询只搜索索引中searchableAttributes
的子集。
数据存储
所有字段都会存储在数据库中,这一行为不可更改。
这意味着即使某个字段既不在displayedAttributes
列表中,也不在searchableAttributes
列表中,它仍然会被存储在数据库里,并且可以随时添加到其中一个或两个列表中。