文本搜索的额外功能
Apache Cloudberry 提供了额外的函数和操作符,用于操作搜索向量和查询向量,并可重写搜索查询。
本节包含以下子主题:
操作文档
解析文档介绍了如何将原始文本文档转换为 tsvector
值。Apache Cloudberry 还提供了一些函数和操作符,用于处理已经转换为 tsvector
形式的文档。
tsvector || tsvector
:tsvector
拼接操作符会返回一个新的向量,其中包含两个输入向量的词元和位置信息。拼接时会保留位置和权重标记。右侧向量中的位置值会在拼接时加上左侧向量中最大的位置值,使结果几乎等同于将原始文本拼接后再执行 to_tsvector
的效果。(这种方式并不完全等效,因为如果左侧向量文本结尾处存在被移除的停用词,它不会影响拼接后的结果;但如果直接拼接文本后再转换,则会影响右侧词元的位置。)
使用向量拼接而非文本拼接的好处之一是可以对文档的不同部分使用不同的解析配置。此外,由于 setweight
函数会统一标记整个向量中的词元权重,因此如果你希望文档的不同部分使用不同权重,应先解析文本并设置权重,再进行拼接。
setweight(<vector> tsvector, <weight> "char") returns tsvector
:setweight
返回输入向量的副本,其中每个位置都被标记为指定的 <weight>
,可选值为 A
、B