在to_tsquery()中使用运算符的效果

问题描述 投票:0回答:1

我正在尝试使用PostgreSQL的文本搜索,我已经使用表的现有两列创建了一个ts_vector列,并使用GIN索引对该列进行了索引。现在,当我查询时,我注意到一个奇怪的行为,当我使用“&”或“ |”之类的运算符时,查询的分数降低在to_tsquery函数中。

对于一百万条记录:-

  1. 解释选择标题,来自xyz ff的正文,其中search_vector @@ to_tsquery('english','apps'); ->得分大约为300
  2. 解释选择标题,正文来自xyz ff,其中search_vector @@ to_tsquery('english','apps&apps'); ->得分大约是30

这种行为我无法理解,查询使用的是位运算符,如果我将其更改为“ apps&tenant”,则分数约为30,但对于单个单词搜索,分数较高。有人可以解释这种行为及其背后的原因。

提前感谢。

postgresql full-text-search postgresql-9.5 tsvector
1个回答
0
投票

[当您使用运算符&|时,您正在告诉to_tsquery函数获取在行中包含两个单词的规则。例如,如果您放置`to_tsquery('english','apps&tenant',您的结果需要在查询中包含两个单词(顺序不相同)。因此,查询将搜索这两个单词。

会影响您得分的另一件事是搜索的权重。

this link中,您可以更好地了解运算符。

© www.soinside.com 2019 - 2024. All rights reserved.