Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Postgres多行文本搜索_Sql_Postgresql - Fatal编程技术网

Sql Postgres多行文本搜索

Sql Postgres多行文本搜索,sql,postgresql,Sql,Postgresql,我有一个名为“exclude”的表,其中包含哈希标记: ------------- id | tag ------------- 1 #oxford 2 #uk 3 #england ------------- 我还有一张桌子叫“post”: ----------------------------------------------- id | tags | text 1 #oxford #funtimes Sitting in th

我有一个名为“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
-----------------------------------------------
为了对posts标签进行文本搜索,我运行了如下查询:

SELECT * FROM post WHERE to_tsvector(tags) @@ plainto_tsquery('mysearchterm')
但是,我现在希望能够排除部分或全部标记位于排除表中的所有帖子。在SQL/Postgres中有什么简单的方法可以做到这一点吗

我尝试将标记行转换为一列,并在plainto_tsquery函数中使用该术语,但它不起作用我不知道如何进行文本搜索“不等于”二者,因此逻辑实际上是错误的,尽管在我看来是正确的:

select * from post where to_tsvector(tags) @@ plainto_tsquery(
   select array_to_string(array(select RTRIM(value) from exclude where key = 'tag'), ' ')
)

您使用的是哪个版本的PostgreSQL?您的模式设计有多灵活?换句话说,你能随意改变它吗?还是这超出了你的控制


当我读到你的问题时,我立刻想到两件事。一个是您应该能够使用数组和@>包含或您使用的是哪个版本的PostgreSQL?您的模式设计有多灵活?换句话说,你能随意改变它吗?还是这超出了你的控制


当我读到你的问题时,我立刻想到两件事。一个是你应该能够使用数组和@>包含或图例!谢谢你,伙计。我使用了数组的概念,并提出了以下似乎很有用的方法:从post WHERE string_到_arraytags中选择标记,&&SELECT arraySELECT RTRIMvalue FROM exclude WHERE key='tag'和tags!=。你会注意到我的标签表结构实际上是id,key,value,其中key是'tag',value是'oxford'等等!谢谢你,伙计。我使用了数组的概念,并提出了以下似乎很有用的方法:从post WHERE string_到_arraytags中选择标记,&&SELECT arraySELECT RTRIMvalue FROM exclude WHERE key='tag'和tags!=。您会注意到我的标签表结构实际上是id、key、value,其中key是'tag',value是'oxford'等等
hstore @> hstore