首页 > 解决方案 > 创建同义词字典以在 PostgreSQL 中添加而不是替换单词

问题描述

我正在构建一个应用程序,其中我使用 PostgreSQL 的内置 FTS 添加了全文搜索功能。该应用程序列出了印度的共同基金。在某些情况下,共同基金公司被收购并更改名称。我想让人们使用旧名称进行搜索,以防他们不知道更改。例如,当 DHFL 基金被 PGIM 收购时,所有基金都从 DHFL 更名为 PGIM。

为此,我创建了一个同义词词典,在其中添加了 PGIM 作为 DHFL 的同义词。

但是,我发现这只是将 DHFL 替换为 PGIM。这意味着在我的查询中不再返回一些仍然保留 DHFL 名称的旧基金,并带有单词 dhfl。

是否存在同义词添加一个词而不是替换它的选项,这样 DHFL 会同时搜索 DHFL 和 PGIM?

标签: postgresql

解决方案


您必须将新字典与to_tsvector和一起使用to_tsquery。然后在两者中所有出现的 DHFL 都将被 PGIM 替换,搜索任一术语将找到任一字符串。它们将被视为同义词,这就是您想要的。


推荐阅读