Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 多对多关系的全文搜索_Sql_Postgresql - Fatal编程技术网

Sql 多对多关系的全文搜索

Sql 多对多关系的全文搜索,sql,postgresql,Sql,Postgresql,我有下列表格 关键字表 CREATE TABLE trigger_keyword ( id bigint NOT NULL, keyword text NOT NULL, CONSTRAINT trigger_keyword_id PRIMARY KEY (id) ) 这是桥牌桌 CREATE TABLE trigger_keyword_trigger_message ( trigger_keyword_id bigint NOT NULL, trig

我有下列表格

关键字表

CREATE TABLE trigger_keyword
(
    id bigint NOT NULL,
    keyword text NOT NULL,
    CONSTRAINT trigger_keyword_id PRIMARY KEY (id)
)
这是桥牌桌

CREATE TABLE trigger_keyword_trigger_message
(
    trigger_keyword_id bigint NOT NULL,
    trigger_message_id bigint NOT NULL,
    CONSTRAINT trigger_keyword_trigger_message_trigger_keyword_id_fkey FOREIGN KEY (trigger_keyword_id)
        REFERENCES public.trigger_keyword (id) MATCH SIMPLE
        ON UPDATE CASCADE
        ON DELETE NO ACTION,
    CONSTRAINT trigger_keyword_trigger_message_trigger_message_id_fkey FOREIGN KEY (trigger_message_id)
        REFERENCES public.trigger_message (id) MATCH SIMPLE
        ON UPDATE CASCADE
        ON DELETE NO ACTION
)
消息表

CREATE TABLE trigger_message
(
    id bigint NOT NULL,
    message text NOT NULL,
    CONSTRAINT trigger_message_id PRIMARY KEY (id)
)
id  message
-----------------------------------------
1   Hi how is your day?
2   Hello, have a wonderful day
3   Looks sunny today
4   Excellent, no rain today
5   looks like we'll have showers today
我有一个PostgreSQL数据库之外的字符串列表,我将在循环中运行它

假设我们在
trigger\u关键字表中有以下关键字

trigger_关键字表

id  keyword
----------------------------------------
1   hi
2   hello
3   the weather
4   the climate
触发器消息表

CREATE TABLE trigger_message
(
    id bigint NOT NULL,
    message text NOT NULL,
    CONSTRAINT trigger_message_id PRIMARY KEY (id)
)
id  message
-----------------------------------------
1   Hi how is your day?
2   Hello, have a wonderful day
3   Looks sunny today
4   Excellent, no rain today
5   looks like we'll have showers today
让我们假设其中一个字符串是
Hi Robot
,则SQL查询应返回
Hi你好吗?
你好,祝你度过愉快的一天
;它应该随机选择其中一个。如果字符串包含
hello robot
而不是
hi robot
,则应该执行相同的操作,因为
hi
hello
都在关键字表中

如果字符串包含
告诉我天气
,那么SQL查询应该返回
今天看起来晴朗
非常好,今天没有雨
看起来我们今天会有阵雨

我想我会用全文搜索这个


这是我第一次使用桥接表,我是否在桥接表中手动插入关系?

您应该在包含两列的“桥接”表上定义主键约束

如中所示的全文搜索是实现此目的的一种方法

要随机选取一个结果行,可以将以下内容附加到查询中:

ORDER BY random() LIMIT 1

要插入到表中,可以在
id
列的定义中使用带有序列的
DEFAULT
子句,并使用
insert。。。返回
以获取桥接表的值。

您应该在包含两列的“桥接”表上定义主键约束

如中所示的全文搜索是实现此目的的一种方法

要随机选取一个结果行,可以将以下内容附加到查询中:

ORDER BY random() LIMIT 1
要插入到表中,可以在
id
列的定义中使用带有序列的
DEFAULT
子句,并使用
insert。。。返回
以获取桥接表的值