# 同义词

同义词功能允许您定义应被视为等效的搜索词。例如:当您将 sneaker 的同义词定义为 shoe 时,搜索 sneaker 现在将返回所有包含 shoe 的记录,以及包含 sneaker 的记录。

Typesense 支持两种类型的同义词:

  1. 单向同义词:将 iphoneandroid 定义为 smart phone 的单向同义词时,搜索 smart phone 将返回包含 iphoneandroid 或两者的文档。

  2. 多向同义词:将 blazercoatjacket 定义为多向同义词时,搜索其中任何一个词(例如:coat)将返回包含同义词集中至少一个词的文档(例如:返回包含 blazercoatjacket 的记录)。

优先级

当同时使用同义词和查询覆盖时,查询覆盖会首先处理,因为其规则可能包含替换查询的指令。然后同义词将在修改后的查询上生效。

特定语言环境的同义词

当同义词指定了 locale 时,它仅在与该语言环境匹配的字段搜索时应用。如果同义词未指定语言环境,则全局应用。这有助于管理同一单词在不同语言中有不同含义的情况。

短语匹配查询与筛选

出于设计考虑,在使用短语搜索或筛选时不会触发同义词。

例如,"Site Reliability" 不会返回包含 Infrastructure 的结果,即使它们被定义为多向同义词,因为 "Site Reliability" 周围的双引号使其成为短语搜索。因此只返回包含该确切完整短语的文档,不包含任何同义词匹配。

此外,同义词仅应用于 q 搜索参数中的词元,而不应用于 filter_by 参数中的任何词元。例如,如果您为 abc <> xyz 定义了多向同义词并使用 filter_by: title:=abc,它将仅匹配 title=abc 的文档,而不是 title=xyz 的文档,因为筛选设计类似于 SQL 的 WHERE 条件进行结构化查询,同义词不适用于筛选器。

# 创建或更新同义词

# 多向同义词

# 示例响应

# 单向同义词

# 示例响应

# 定义

PUT ${TYPESENSE_HOST}/collections/:collection/synonyms/:id

# 参数说明

参数名 是否必填 描述
synonyms 应被视为同义词的单词数组
root 对于单向同义词,指定 synonyms 参数中的单词映射到的根词
locale 同义词的语言区域。如果指定,该同义词仅会在搜索具有匹配语言区域的字段时应用。如果未指定,同义词将全局应用
symbols_to_index 默认情况下,特殊字符会从同义词中删除。使用此属性可以指定哪些特殊字符应保持原样被索引

# 检索同义词

我们可以检索单个同义词。

# 示例响应

# 定义

GET ${TYPESENSE_HOST}/collections/:collection/synonyms/:id

# 列出所有同义词

列出与指定集合关联的所有同义词。

注意:默认情况下会返回所有同义词,但您可以使用 offsetlimit 参数来实现分页显示。

# 示例响应

# 定义

GET ${TYPESENSE_HOST}/collections/:collection/synonyms

# 删除同义词

删除与集合关联的同义词。

# 示例响应

# 定义

DELETE ${TYPESENSE_HOST}/collections/:collection/synonyms/:id