2

我有一个包含四个语言翻译列的表。例如,如果有描述数据,那么数据库中有四列:description_endescription_dedescription_itdescription_fr

我建立了一个索引和tsv::tsvector列,将所有这些列的数据收集到一个tsvector列中。

查询该表tsv @@ to_tsquery(#{ search_query })很好,但我想匹配search_query拼写错误的行。换句话说,执行模糊搜索。然而,我希望它尽可能快,因为我的桌子真的很大......

所以我想知道,在 Postgres 中是否有可能以某种方式匹配我的tsv专栏metaphone(#{ search_query }, 2)

因此,例如,字符串Herrenarmbanduhrheren得到匹配。

UPD:我有一些......中等数量的翻译列,所以匹配这些metaphone(column_a, 2) = metaphone(query, 2) OR metaphone(column_b, 2) = metaphone(query, 2)...对我来说很痛苦......

4

1 回答 1

1

据我所知,这不受开箱即用的支持。

应该可以编写一个例程(可能是 C 语言函数?)将 tsvector 转换为类似于文本值数组的东西,然后使用其他搜索功能对这些进行语音搜索。由于初始转换和语音转换是不可变的,您可以索引输出。

但这不支持开箱即用,至少需要一些工作。

于 2013-12-07T07:59:51.847 回答