同义词
使用 Meilisearch 的同义词功能来指定在搜索过程中应被视为等效的查询词集合。
如果在您的数据集中有多个词具有相同含义,您可以创建同义词列表。这将使您的搜索结果更加相关。
设置为同义词的词语不总会返回相同的结果。在默认设置下,movies 数据集搜索 great 会返回 547 条结果,而 fantastic 返回 66 条。让我们将它们设为同义词:
使用新设置后,搜索 great 返回 595 条结果,fantastic 返回 423 条。这是由于多种因素造成的,比如拼写容错和查询拆分以查找相关文档。搜索 great 将允许一个拼写错误(例如 create),并考虑 great 的所有变体(例如 greatest)以及 fantastic。
搜索结果数量可能因 movies 数据集的更改而有所不同。
标准化处理
所有同义词在索引过程中都会进行小写转换和去重音处理。
示例
假设我们将 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 个。