我正在尝试使用 postgresql 的文本搜索,我使用表的现有两列创建了一个 ts_vector 列,并使用 GIN 索引对该列进行索引。现在,当我查询时,我注意到一个奇怪的行为,当我使用“&”或“|”等运算符时,查询的分数会降低 在 to_tsquery 函数中。
对于 100 万条记录:-
- 解释 select title, body from xyz ff where search_vector @@ to_tsquery('english', 'apps'); --> 分数在 300 左右
- 解释 select title, body from xyz ff where search_vector @@ to_tsquery('english', 'apps & apps'); --> 分数在 30 左右
这种行为我无法理解,查询的区别在于使用运算符,如果我将其更改为“应用程序和租户”,那么分数也在 30 左右,但对于单字搜索,分数很高。有人可以解释这种行为及其背后的原因。
提前致谢。