【发布时间】:2015-05-27 05:05:21
【问题描述】:
我在 postgres 中有 news_alerts 和 news_items 表,索引如下:
CREATE TABLE news_items (
id INTEGER NOT NULL,
content character varying
);
CREATE TABLE news_alerts (
id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
terms character varying(255)
);
CREATE INDEX news_alerts_terms ON news_alerts
USING gin (to_tsvector('english'::regconfig, (terms)::text));
还有以下新闻提醒:
INSERT INTO news_alerts (user_id, terms) values (1, 'Jim Jarmusch');
INSERT INTO news_alerts (user_id, terms) values (1, 'Kim Kardashian');
INSERT INTO news_alerts (user_id, terms) values (2, 'Kim Kardashian');
当有新消息出现时,我将其添加到news_items:
INSERT INTO news_items (content) values ('Breaking: Kim Kardashian posts unconscionable new selfies from birthday party');
在这一点上,我想提醒两个(尽管不明智地)选择接收金卡戴珊新闻的用户。我想找到所有terms 与content 匹配的news_alerts news_item 并通知这些用户。
有没有办法通过 postgres 索引甚至外部工具或服务来做到这一点?
【问题讨论】:
-
如果您将相关表的 CREATE TABLE 语句和一些 INSERT 语句粘贴到您的问题中(至少是 news_items 和 news_alerts 表),您会吸引更多的兴趣。我们大多数人可以根据不完整的描述对表格进行逆向工程,但我们并不总是选择以这种方式投入时间。
-
感谢@MikeSherrill'CatRecall'。我添加了表定义。 INSERT 将符合预期。
-
@muirbot 你能发布一些插页吗?它将允许有兴趣的人进行测试,而不必自己发明一个虚拟数据集。
标签: database postgresql search indexing