PostgreSQL 全文搜索从选择中删除行

PostgreSQL full-text search drops rows from selection

全文搜索不显示某些词位的任何值。

虽然这段代码returns true:

SELECT to_tsvector('ispell_russian', description)
       @@ to_tsquery('ispell_russian', 'сам')
FROM callcenter.points_cardsservices
INNER JOIN callcenter.units ON recipientname = name
WHERE units.deptid = 5 
  AND id=366020;

以下选择的结果为空:

SELECT *
FROM callcenter.points_cardsservices
INNER JOIN callcenter.units ON recipientname = name
WHERE units.deptid = 5
  AND id=366020
  AND to_tsvector('ispell_russian', description)
      @@ to_tsquery('ispell_russian', 'сам');

我要搜索的词曾经在停用词列表中。它会导致这种问题吗?此外,to_tsvector('ispell_russian', description) 上有一个索引。

您永远找不到停用词,因为它甚至在搜索开始之前就被过滤掉了。

但你说它用作停用词。如果您更改了停用词列表,那么您已经更改了在索引中使用的 IMMUTABLE (!) 函数 to_tsvector('ispell_russian', ) 的行为。

如果更改索引不可变函数的行为,索引就会损坏。您将不得不使用 REINDEX INDEX 重建索引。