同义词
使用 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 个。