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。。。返回
以获取桥接表的值