索引是文档组和相关设置的集合。它类似于 SQL 中的表或 MongoDB 中的集合。 索引由 uid 定义,并包含以下信息:
  • 一个 主键
  • 可自定义的 设置
  • 任意数量的文档

示例

假设您管理一个包含电影信息的数据库,类似于 IMDb。您可能希望保留多种类型的文档,例如电影、电视剧、演员、导演等。这些类别中的每一个都将由 Meilisearch 中的一个索引表示。 使用索引的设置,您可以自定义该索引的搜索行为。例如,一个 movies 索引可能包含带有 movie_idtitlegenreoverviewrelease_date 等字段的文档。通过使用设置,您可以让电影的 title 对搜索结果的影响大于其 overview,或者使 movie_id 字段不可搜索。 一个索引的设置不会影响其他索引。例如,您可以为 movies 索引使用不同的同义词列表,而不是为 costumes 索引使用,即使它们位于同一服务器上。

索引创建

隐式索引创建

如果您尝试向一个不存在的索引添加文档或设置,Meilisearch 将自动为您创建它。

显式索引创建

您可以使用创建索引端点显式创建索引。创建后,您可以使用添加文档端点添加文档。 虽然隐式索引创建更方便,只需一个 API 请求,但显式索引创建被认为对生产更安全。这是因为隐式索引创建将多个操作捆绑到一个任务中。如果一个操作成功而另一个失败,则问题可能难以诊断。

索引 UID

uid 是索引的唯一标识符。它在创建索引时设置,并且必须是整数或只包含字母数字字符 a-z A-Z 0-9、连字符 - 和下划线 _ 的字符串。 一旦定义,uid 不能更改,并且您不能创建具有相同 uid 的另一个索引。
{
  "uid": "movies",
  "createdAt": "2019-11-20T09:40:33.711324Z",
  "updatedAt": "2019-11-20T10:16:42.761858Z"
}

主键

每个索引都有一个主键:一个必需的属性,必须存在于索引中的所有文档中。每个文档都必须为此属性关联一个唯一值。 主键用于标识每个文档,以便索引中的两个文档永远不会完全相同。如果您添加两个具有相同主键值的文档,它们将被视为相同的文档:一个将覆盖另一个。如果您尝试添加文档,并且即使一个文档缺少主键,也不会存储任何文档。 您可以为索引设置主键,或者让 Meilisearch 推断它。阅读更多关于设置主键的信息。 了解更多关于主字段的信息

索引设置

索引设置可以看作是一个 JSON 对象,其中包含许多用于自定义搜索行为的不同选项。 您可以自定义以下索引设置: 要更改索引设置,请使用更新设置端点或任何子路由。

显示和可搜索属性

默认情况下,每个文档字段都是可搜索的并在搜索查询响应中显示。但是,您可以选择将某些字段设置为不可搜索、不显示或两者兼有。 您可以使用更新设置端点,或显示属性可搜索属性的相应端点更新这些字段属性。 了解更多关于显示和可搜索属性的信息。

不同属性

如果您的数据集包含多个相似的文档,您可能只想在搜索时返回一个。假设您的 costumes 索引中有许多不同尺寸的黑色夹克。将 costume_name 设置为唯一属性意味着 Meilisearch 不会返回多件具有相同 costume_name 的黑色夹克。 使用更新设置端点更新唯一属性端点指定唯一属性。每个索引只能将一个字段设置为唯一属性。 了解更多关于唯一属性的信息。

分面

分面是 Meilisearch 中过滤器的一种特定用例:某个事物是分面还是过滤器取决于您的 UI 和 UX 设计。与过滤器一样,您需要将分面添加到filterableAttributes,然后使用filter 搜索参数进行搜索查询。 默认情况下,Meilisearch 为每个分面字段返回 100 个分面值。您可以使用更新设置端点更新分面设置端点更改此设置。 了解更多关于分面查询的信息。

可过滤属性

过滤允许您根据不同的类别优化搜索。例如,您可以搜索特定 genre(例如 Science Fiction)且 rating 高于 8 的所有电影。 在对任何文档属性进行过滤之前,您必须使用更新设置端点更新可过滤属性端点将其添加到 filterableAttributes。然后,使用filter 搜索参数进行搜索查询。 了解更多关于过滤的信息。

分页

为了保护您的数据库免受恶意抓取,Meilisearch 对搜索查询只返回最多 1000 个结果。您可以使用更新设置端点更新分页设置端点来更改此限制。 了解更多关于分页的信息。

排序规则

Meilisearch 使用排序规则对匹配的文档进行排序,以便最相关的文档出现在顶部。所有索引都使用相同的内置排序规则按默认顺序执行。这些规则的顺序很重要:第一条规则影响最大,最后一条规则影响最小。 您可以更改此顺序或定义自定义排序规则以首先返回某些结果。这可以通过使用更新设置端点更新排序规则端点来完成。 了解更多关于排序规则的信息。

可排序属性

默认情况下,Meilisearch 根据相关性对结果进行排序。您可以更改此排序行为以首先显示某些结果。 使用更新设置端点更新可排序属性端点将您希望排序的属性添加到 sortableAttributes。然后,您可以使用sort 搜索参数按升序或降序对结果进行排序。 了解更多关于排序的信息。

停用词

您的数据集可能包含您在搜索期间想要忽略的词语,例如,它们没有增加语义价值或出现频率过高(例如,英语中的 theof)。您可以将这些词语添加到停用词列表中,Meilisearch 将在搜索期间忽略它们。 使用更新设置端点更新停用词端点更改索引的停用词列表。除了提高相关性外,将常用词指定为停用词还大大提高了性能。 了解更多关于停用词的信息。

同义词

您的数据集可能包含含义相似的词语。对于这些词语,您可以定义一个同义词列表:在搜索目的下将被视为相同或相似的词语。由于拼写错误和查询拆分等因素,设置为同义词的词语不一定会返回相同的结果。 由于同义词是为给定索引定义的,它们不会应用于同一 Meilisearch 实例上的任何其他索引。您可以使用更新设置端点更新同义词端点创建您的同义词列表。 了解更多关于同义词的信息。

错别字容忍度

错别字容忍度是一项内置功能,即使您的搜索查询包含拼写错误或错别字(例如,将 chickne 输入为 chicken),也能帮助您找到相关结果。此设置允许您为索引执行以下操作
  • 启用或禁用错别字容忍度
  • 配置错别字的最小单词大小
  • 禁用特定单词的错别字
  • 禁用特定文档属性的错别字
您可以使用更新设置端点更新错别字容忍度端点更新错别字容忍度设置。 了解更多关于错别字容忍度的信息。

交换索引

假设您有一个生产中的索引 movies,您的用户当前正在向其发出搜索请求。您想部署一个具有不同设置的新版本 movies,但正常更新可能会导致用户停机。这个问题可以通过交换索引来解决。 要使用索引交换,您将创建第二个索引 movies_new,其中包含您要对 movies 进行的所有更改。 这意味着 movies 的文档、设置和任务历史将与 movies_new 的文档、设置和任务历史交换,而不会对搜索客户端造成任何停机enqueued 任务的任务历史不会被修改。 交换后,您的用户仍将向 movies 索引发出搜索请求,但它将包含 movies_new 的数据。您可以在交换后删除 movies_new,或者保留它,以防出现问题并希望交换回来。 交换索引是原子事务:要么所有索引都成功交换,要么都不交换 有关更多信息,请参阅交换索引端点
© . This site is unofficial and not affiliated with Meilisearch.