如何在sql to_tsvector中添加相关的表列?



我正在研究一个django API,我需要在其中实现搜索类型功能。起初我想使用Django SearchVector和SearchQuery,但是当查询条件不完整时,它们似乎表现不佳(这对于"即时输入"并不理想)。所以我选择了SQL方法。我需要能够搜索联系人的first_name和last_name以及与该联系人相关的用户的电子邮件。

我使用以下代码创建了一个关于联系人的search_vector,并在该列上添加了一个索引。这对于搜索姓和名非常有用。

ALTER TABLE contact_contact 
ADD COLUMN search_vector tsvector;

UPDATE contact_contact
SET search_vector = to_tsvector('english', coalesce(first_name, '') || ' ' || coalesce(last_name, ''));
CREATE INDEX mc_idx2 ON contact_contact USING GIN (search_vector);

我想将用户电子邮件添加到这个search_vector,类似于:

...
SET search_vector = to_tsvector('english', coalesce(first_name, '') || ' ' || coalesce(last_name, '') || coalesce(user.email::text, ' '));
...

我得到以下错误

ERROR: "."第二行:……|| ' ' || 合并(last_name")| |合并(user.email: te . .

"."指的是"user.email"我不知道正确的语法或过程。任何帮助都非常感谢!

那么你必须在两个表之间连接:

UPDATE contact_contact cc
SET search_vector = to_tsvector('english', coalesce(first_name, '') || ' ' || coalesce(last_name, '') || ' ' || coalesce(u.email::text, '') || ' ' || coalesce(co.name::text, '')) 
FROM user u 
JOIN company co
On co.contact_id = cc.id 
WHERE u.contact_id = cc.id

相关内容

  • 没有找到相关文章

最新更新