如何将 ts_query 与 ANY(anyarray) 一起使用

How to use ts_query with ANY(anyarray)

我目前在 PostgreSQL 中有一个查询,例如:

SELECT
    name
FROM
    ingredients
WHERE
    name = ANY({"string value",tomato,other})

我的配料table只是一个简单的名字列表:

   name
----------
 jalapeno
 tomatoes
 avocados
 lime

我的问题是数组中的复数值与查询中的单个值不匹配。为了解决这个问题,我在 table:

上创建了一个 tsvector
     name      |    tokens  
---------------+--------------
jalapeno       | 'jalapeno':1
tomatoes       | 'tomato':1
avocados       | 'avocado':1
lime           | 'lime':1

我可以像这样从 table 中正确查询单个值:

SELECT
    name,
    ts_rank_cd(tokens, plainto_tsquery('tomato'), 16) AS rank
FROM
    ingredients
WHERE
    tokens @@ plainto_tsquery('tomato')
ORDER BY
    rank DESC;

但是,我需要从整个数组中查询值。该数组是从另一个函数生成的,因此我可以控制数组中每个项目的类型。

如何将 @@ 操作数与 ANY(anyarray) 一起使用?

这应该是直截了当的:

WHERE tokens @@ ANY
   (ARRAY[
      plainto_tsquery('tomato'),
      plainto_tsquery('celery'),
      plainto_tsquery('vodka')
   ])