我在使用PostgreSQL進行關係數據存儲的Web應用程序中進行全文搜索的策略如下。比如我會拿Invoices
表。如何在關係數據更改時更新PostgreSQL全文搜索字段
在表中我有一個附加字段
ALTER TABLE invoices ADD COLUMN tsv tsvector
上全文搜索查詢這樣... WHERE tsv @@ to_tsquery('query:*') ...
做到在每一個全文檢索表我樹立了一個UPDATE觸發器上更新
tsv
場記錄的每一個變化。更新集合並將來自不同字段的數據連接到tsv
字段,設置權重等等。設置到
tsv
字段中的數據也可以是來自其他表的關係數據。從例如表invoices
我client_id
領域,但因爲我想通過客戶端名稱來搜索發票以及我還包括在invoices.tsv
場clients.client_name
數據
我的問題是什麼,是保持關係的最佳策略數據在tsv選擇器中同步。在上面的情況 - >如果客戶名稱更改我需要更新這字段中的每個發票...
我應該設置cron作業設置每晚會這樣做嗎?它也可以使用觸發器完成,但是由於我的數據庫模式非常大,如果觸發器遍佈各處,我很害怕它可能會失去控制。