PostgreSQL全文搜索中的多个同义词词典匹配

Rya*_*rth 5 sql postgresql dictionary full-text-search

我正在尝试在 PostgreSQL 8.3 中进行全文搜索。它工作得非常好,所以我使用同义词词典添加了同义词匹配(例如'bob' == 'robert')。这也很好用。但我注意到它显然只允许一个词有一个同义词。也就是说,“al”不能是“albert”和“allen”。

这样对吗?有没有办法在 PostgreSQL 同义词词典中有多个词典匹配?

作为参考,这是我的示例字典文件:

bob    robert
bobby  robert
al     alan
al     albert
al     allen
Run Code Online (Sandbox Code Playgroud)

以及创建全文搜索配置的 SQL:

CREATE TEXT SEARCH DICTIONARY nickname (TEMPLATE = synonym, SYNONYMS = nickname);
CREATE TEXT SEARCH CONFIGURATION dxp_name (COPY = simple);
ALTER TEXT SEARCH CONFIGURATION dxp_name ALTER MAPPING FOR asciiword WITH nickname, simple;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢!

Mag*_*der 5

这是同义词工作方式的限制。你可以做的是扭转它,如:

bob    robert
bobby  robert
alan   al
albert al
allen  al
Run Code Online (Sandbox Code Playgroud)

它应该给出相同的最终结果,即搜索其中任何一个都将匹配相同的内容。