我正在尝试使用PostgreSQL的文本搜索,我已经使用表的现有两列创建了一个ts_vector列,并使用GIN索引对该列进行了索引。现在,当我查询时,我注意到一个奇怪的行为,当我使用“&”或“ |”之类的运算符时,查询的分数降低在to_tsquery函数中。
对于一百万条记录:-
这种行为我无法理解,查询使用的是位运算符,如果我将其更改为“ apps&tenant”,则分数约为30,但对于单个单词搜索,分数较高。有人可以解释这种行为及其背后的原因。
提前感谢。
[当您使用运算符&
或|
时,您正在告诉to_tsquery
函数获取在行中包含两个单词的规则。例如,如果您放置`to_tsquery('english','apps&tenant',您的结果需要在查询中包含两个单词(顺序不相同)。因此,查询将搜索这两个单词。
会影响您得分的另一件事是搜索的权重。
在this link中,您可以更好地了解运算符。