gpt4 book ai didi

postgresql - Postgres - to_tsquery、to_tsvector 和 plainto_tsquery 之间的区别

转载 作者:行者123 更新时间:2023-12-04 02:43:08 28 4
gpt4 key购买 nike

postgres 的全文搜索包括以下一些搜索函数:plainto_tsquery、to_tsquery 和 to_tsvector。
我不明白它之间的区别,结果总是包含相同的词,但在 tsvector 中它与该词的位置数分离。

SELECT plainto_tsquery('simple', 'The & Fat & Rats');

结果将是这样的:
plainto_tsquery: 'fat' & 'rat'
to_tsquery: 'fat' & 'rat'
to_tsvector: 'fat':2 'rat':3

我尝试了更长的查询,但我没有发现比这更大的差异。

我已经阅读了文档,但我也没有发现其中的区别。

我很高兴得到任何帮助。

最佳答案

“plainto_tsquery”采用简单的英语短语(或者在这种情况下简单的“简单”--尽管您的问题不一致。“简单”不会删除单词“the”,即您显示的方式,除非您进行了非标准修改到它)并将其转换为 tsquery。因为“&”是标点符号,所以它会被忽略。但随后它在单词之间添加了 '&',因为这就是“plainto_tsquery”所做的。所以这些变化是不可见的,因为你选择了一个糟糕的例子来提供给 plainto_tsquery。

“to_tsquery”将您提供的查询编译为用于搜索的结构。但是,因为您是选择它而不是将它与 ts 查询运算符一起使用,所以它会再次将其转换回文本,以便可以显示它。它要求你提供给它的内容看起来很像一个 tsquery(例如,在每个单词之间有 bool 运算符),否则它会抛出一个错误。当您尝试更长的查询时,您肯定注意到了吗?

“to_tsvector”创建一个 tsvector。这不是 tsquery,而是 tsquery 应用于的对象。

关于postgresql - Postgres - to_tsquery、to_tsvector 和 plainto_tsquery 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58409943/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com