同义词
使用 Meilisearch 同义词来指示在搜索过程中应被视为等效的查询词集。
如果您的数据集中有多个词具有相同的含义,您可以创建同义词列表。这将使您的搜索结果更具相关性。
设置为同义词的词语不一定会返回相同的结果。在默认设置下,`movies` 数据集对 `great` 应该返回 547 个结果,对 `fantastic` 应该返回 66 个结果。现在,让我们将它们设置为同义词
在新设置下,搜索 `great` 返回 595 个结果,搜索 `fantastic` 返回 423 个结果。这归因于多种因素,例如错别字和拆分查询以查找相关文档。对 `great` 的搜索将只允许一个错别字(例如,`create`),并会考虑 `great` 的所有变体(例如,`greatest`)以及 `fantastic`。
搜索结果的数量可能会因 `movies` 数据集的变化而异。
标准化
所有同义词在索引过程中都会被转换为小写并去除 Unicode 特殊字符。
示例
考虑将 `Résumé` 和 `CV` 设置为同义词的情况。
搜索 `cv` 会返回包含 `cv` 或 `CV` 的所有文档,此外还会返回包含 `Résumé`、`resumé`、`resume` 等的文档,不受大小写或重音符号的影响。
单向关联
当您希望一个词是另一个词的同义词,但反之不亦然时,请使用此功能。
搜索 `phone` 将返回包含 `iphone` 的文档,就好像它们包含了 `phone` 一词一样。
然而,如果您搜索 `iphone`,由于错别字规则,包含 `phone` 的文档在结果中的排名会较低。
示例
要创建单向同义词列表,应将以下 JSON 语法添加到设置中。
相关性
精确搜索查询始终优先于其同义词。在搜索结果排名时,exactness
排名规则更偏爱精确词而非同义词。
以下是一组搜索结果
如果您将 ghost
配置为 spirit
的同义词,则搜索 spirit
的查询将返回文档 1
,然后再返回文档 0
。
相互关联
通过将一个或多个同义词相互关联,它们在两个方向上都将被视为相同。
当使用这些词中的一个进行搜索时,所有同义词都将被视为同一个词,并出现在搜索结果中。
示例
要创建四个词之间的相互关联,应将以下 JSON 语法添加到设置中。
多词同义词
Meilisearch 将多词同义词视为短语。
示例
假设您将 `San Francisco` 和 `SF` 设置为同义词并进行相互关联
如果您输入 `SF` 作为搜索查询,Meilisearch 也会返回包含短语 `San Francisco` 的结果。然而,根据排名规则,它们可能被认为不如包含 `SF` 的结果相关。反之亦然:如果您的查询是 `San Francisco`,包含 `San Francisco` 的文档可能会比包含 `SF` 的文档排名更高。
每个词的同义词最大数量
单个词最多可以有 50 个同义词。Meilisearch 会静默忽略超出此限制的任何同义词。例如,如果您为 `book` 配置了 51 个同义词,Meilisearch 将只返回包含该词本身和前 50 个同义词的结果。
如果一个词的任何同义词包含多个词,则该词的所有同义词的总词数不能超过 100 个词。Meilisearch 会静默忽略超出此限制的任何同义词。例如,如果您在应用程序中为 `computer` 配置了 40 个同义词,则这些同义词的总词数必须少于 100 个。