# 同义词
同义词功能允许您定义应被视为等效的搜索词。例如:当您将 sneaker 的同义词定义为 shoe 时,搜索 sneaker 现在将返回所有包含 shoe 的记录,以及包含 sneaker 的记录。
Typesense 支持两种类型的同义词:
单向同义词:将
iphone和android定义为smart phone的单向同义词时,搜索smart phone将返回包含iphone或android或两者的文档。多向同义词:将
blazer、coat和jacket定义为多向同义词时,搜索其中任何一个词(例如:coat)将返回包含同义词集中至少一个词的文档(例如:返回包含blazer或coat或jacket的记录)。
优先级
当同时使用同义词和查询覆盖时,查询覆盖会首先处理,因为其规则可能包含替换查询的指令。然后同义词将在修改后的查询上生效。
特定语言环境的同义词
当同义词指定了 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
# 列出所有同义词
列出与指定集合关联的所有同义词。
注意:默认情况下会返回所有同义词,但您可以使用 offset 和 limit 参数来实现分页显示。
# 示例响应
# 定义
GET ${TYPESENSE_HOST}/collections/:collection/synonyms
# 删除同义词
删除与集合关联的同义词。
# 示例响应
# 定义
DELETE ${TYPESENSE_HOST}/collections/:collection/synonyms/:id