ハッシュタグを含む「exclude」というテーブルがあります。
-------------
id | tag
-------------
1 #oxford
2 #uk
3 #england
-------------
'post'という別のテーブルがあります。
-----------------------------------------------
id | tags | text
1 #oxford #funtimes Sitting in the sun
2 #oz Beach fun
3 #england Milk was a bad choice
-----------------------------------------------
投稿タグでテキスト検索を行うために、次のようなクエリを実行しました。
SELECT * FROM post WHERE to_tsvector(tags) @@ plainto_tsquery('mysearchterm')
ただし、タグの一部またはすべてが除外テーブルにあるすべての投稿を除外できるようにしたいと思います。SQL / Postgresでこれを行う簡単な方法はありますか?
タグの行を1つの列に変換し、plainto_tsquery関数内でこの用語を使用しようとしましたが、機能しません(どちらにも等しくないテキスト検索を行う方法がわからないため、ロジックが実際には間違っています。私の頭の中では正しい線にありますが):
select * from post where to_tsvector(tags) @@ plainto_tsquery(
select array_to_string(array(select RTRIM(value) from exclude where key = 'tag'), ' ')
)