0

我有两个表,其中有来自两个不同来源的数据。每个表的一个字段包含电影的标题,但由于某种我无法控制的原因,标题并不总是完全相同。

所以我使用ts_vector来消除所有细微的差异(停用词、复数等)。

在此处查看示例:http ://sqlfiddle.com/#!17/5ccbc/3

我的问题是如何在ts_vector不考虑数字值的情况下比较两者,而只考虑文本内容。如果我直接比较这两个字段,我只会得到值之间的完全匹配,包括每个单词的位置。我发现的唯一解决方案是使用该strip()函数,从 tsvector 中删除位置和权重,只留下文本内容。

我想知道是否有最快的比较方法ts_vectors

4

1 回答 1

0

您可以在剥离向量的索引中创建:

create index on tbl1 (strip(ts_title));
create index on tbl2 (strip(ts_title));

但是鉴于您的查询必须获取每个表的每一行,这不太可能起到很大的作用。在预先计算的剥离向量之间进行合并连接可能会更快,但一旦包含构建和维护索引的开销,可能就不会了。如果真正的 WHERE 子句更具限制性(从一个或另一个表中只选择几行),那么请分享真正的查询。

于 2020-03-02T20:21:36.057 回答