使用列作为to_tsquery的输入

时间:2018-11-07 12:40:23

标签: postgresql full-text-search tsvector

我有一个表T1,其中只有一列具有2000个唯一单词。还有另一个表T2,其中有一个单词列。我想在T2中找到记录,因为它们的单词与T1中的单词之一匹配。 因此,假设T1如下所示:

word
------
regents
sky
tree
trees
avenue

T2像这样:

tags    |  id|   usrid
--------+----+--------
shifs   |   1|      @1
trees   |   2|      @2
sky     |   3|      @3
regents |   4|      @4
regent  |   5|      @5

我想得到如下结果:

tags    |  id|   usrid
--------+----+--------
trees   |   2|      @2
sky     |   3|      @3
regents |   5|      @5

我可以使用以下查询来搜索T2中的标签列,但我想使用word中的T1列作为tsquery的输入。

SELECT *
FROM T2
WHERE to_tsvector(tags) @@ to_tsquery('regent');

1 个答案:

答案 0 :(得分:1)

这将是表之间的简单连接:

SELECT t2.*
FROM t1 JOIN t2
   ON t2.tags = t1.word;

无需全文搜索!