簡體   English   中英

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

[英]How to add related table column in sql to_tsvector?

我正在研究 django API ,我需要在其中實現“即用型搜索”功能。 起初我想使用 Django SearchVector 和 SearchQuery 但是當查詢詞不完整時它們似乎表現不佳(這對於“as-you-type”部分來說並不理想)所以我選擇了 SQL 方法。 我需要能夠搜索聯系人的名字和姓氏以及與該聯系人相關的用戶的 email。

我使用以下內容在聯系人上創建 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);

我想將用戶 email 添加到此search_vector中,例如:

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

我收到以下錯誤

錯誤:“。”處或附近的語法錯誤第 2 行:...|| ' ' || 合並(姓氏,'')|| 合並(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM