# 同义词
同义词功能允许您定义应被视为等效的搜索词。例如:当您将 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