显示和可搜索的属性
默认情况下,当文档添加到 Meilisearch 中时,在文档中找到的所有新属性都会自动添加到两个列表中
displayedAttributes
:其字段在文档中显示的属性searchableAttributes
:其值用于匹配查询字词进行搜索的属性
默认情况下,文档中的每个字段都已显示且可搜索。这些属性可在设置中进行修改。
已显示的字段
属性添加到displayedAttributes
列表中的字段显示在每个匹配的文档中。
搜索后返回的文档仅包含已显示的字段。如果字段属性不在已显示属性列表中,则该字段不会添加到返回的文档中。
默认情况下,所有字段属性都设置为已显示.
示例
假设你管理一个包含有关电影信息的数据库。通过添加以下设置,搜索后返回的文档将包含字段title
、overview
、release_date
和genres
。
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
列表有以下两个目的
- 它指定可搜索的字段
- 它规定了属性排名顺序
searchableAttributes
列表有两种可能的模式。
默认:自动
默认情况下,所有属性都会自动添加到searchableAttributes
列表中,按照它们出现的顺序排列。这意味着初始顺序将基于第一个已编制索引的文档中的属性顺序,并且在后续文档中找到的每个新属性都会添加到此列表的末尾。
此默认行为由["*"]
searchableAttributes
值表示。若要验证 searchableAttributes
列表的当前值,请使用获取可搜索属性端点。
如果您希望将可搜索属性列表恢复为这种默认行为,将 searchableAttributes
设置为空数组 []
或使用重置可搜索属性端点。
手动
您可能希望在对文档编制索引后,使某些属性不可搜索,或更改 属性排名顺序。若要进行此操作,请按所需顺序放置属性,并使用更新可搜索属性端点 发送更新后的列表。
在手动更新 searchableAttributes
列表后,后续新属性将不再自动添加,除非重置设置。
警告
由于实现错误,手动更新 searchableAttributes
将更改 JSON 响应中文档字段的显示顺序。此行为不一致,将在未来版本中得到修复。
示例
假设您管理一个包含以下字段的电影数据库:id
、overview
、genres
、title
、release_date
。所有这些字段都包含有用的信息。但是,有些字段比其他字段更有利于搜索。若要使 id
和 release_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
列表中均不存在,该字段仍然会存储在数据库中,并且可以随时将其添加到一个或两个列表中。