Postgres模糊数组交集



我使用的是Postgresql 13,我的问题很容易通过@>操作符解决:

select id from documents where keywords @> '{"winter", "report", "2020"}';

表示keywords数组应该包含所有这些元素。我还在这列上创建了一个GIN索引。

是否有可能实现类似的行为,即使我提供我的请求像'{"re", "202", "w"}'?我听说图形有这样的语义,但是"交集"。数组的功能对我来说很重要。

在您的示例中,匹配的都是前缀。这是这里的一般规则吗?如果是这样,您可能会使用全文搜索的匹配特性,而不是三元组。这需要你重新格式化你的数据,或者至少是你的查询。

select * from  
(values (to_tsvector('simple','winter report 2020'))) f(x) 
where x@@ 're:* & 202:* & w:*'::tsquery;

如果字符串可以包含你想要保留的标点符号,你需要自己费力地将它们格式化成一个带引号的tsvector,而不是让to_tsvector处理它。使用'simple'配置可以消除词干和停止词删除功能,这些功能会干扰您想要做的事情。

最新更新