Aurora Postgresql全文搜索无法找到与“正常”Postgresql示例相比的结果

e1xvtsh3  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(156)

我有一个在本地服务器上运行的Postgres v14数据库示例,将数据复制到AWS上的Postgres兼容Aurora Serverless V2 DB。为了在我的API中支持文本搜索功能,我决定使用Postgres内置的文本搜索引擎,我遇到了一些奇怪的行为,这些行为只发生在Aurora DB示例上,而不是本地Postgres示例。
一个主要的例子是搜索一个包含“the”的短语。假设我有一个表,其中有一个“title”列和一个标题为“Big Bang”的条目。当将文本转换为ts_vectors或ts_queries时,像“the”和“and”这样的词在文本规范化时应该被完全忽略。文档中的示例

SELECT to_tsquery('english', 'The & Fat & Rats');
  to_tsquery
---------------
 'fat' & 'rat'

在本地示例中,搜索“The Big Bang”会按预期返回标题中包含“Big Bang”的行,但在Aurora DB示例中执行完全相同的搜索不会返回任何结果,除非从搜索中删除“The”。
这使我得出结论,有一些配置是不同的,因为数据是完全相同的,但我当然可能是错的。
我尝试过使用不同版本的测试示例进行实验,并尝试使用Aurora DB配置,但没有任何成功。修改vector设置和搜索类型也不会产生任何结果,尽管正如我提到的,两个数据库之间的tsvectors是相同的,所以它不应该这样做。
查询参考:

select * from some_table 
where to_tsvector(title) @@ plainto_tsquery('The Big Bang')

(In practice我正在使用GIN索引的预处理向量列)
任何解决方案和见解将非常赞赏。
Edit:这里是用于填充向量列的函数和触发器

CREATE FUNCTION vector_column_trigger() RETURNS trigger AS $$
begin
  new.vector_column :=
     setweight(to_tsvector('pg_catalog.english', coalesce(new.title,'')), 'A') ||
     setweight(to_tsvector('pg_catalog.english', coalesce(new.description,'')), 'C');
  return new;
end
$$ LANGUAGE plpgsql;

CREATE TRIGGER update_vector_column BEFORE INSERT OR UPDATE
    on some_table FOR EACH ROW EXECUTE FUNCTION vector_column_trigger();
8e2ybdfx

8e2ybdfx1#

我完全忘了我问了这个问题。因此,我最终发现,很明显,配置可以根据每个客户端进行更改。实际上一切都很好,我用来测试Aurora示例的客户机配置错误。
我有点傻。谢谢大家的帮助。

相关问题