我有一个包含四种语言翻译列的表。例如,如果有 description 数据,则数据库中有四列: description_en , description_de , description_it 和 description_fr 。
我构建了一个索引和tsv::tsvector
列,将所有这些列的数据收集到一个tsvector
列中。
使用tsv @@ to_tsquery(#{ search_query })
查询该表很不错,但我希望匹配search_query
拼写错误的行。换句话说,执行模糊搜索。然而,我希望它尽可能快,因为我的桌子很大......
所以我想知道,Postgres是否有可能以某种方式将tsv
列与metaphone(#{ search_query }, 2)
相匹配?
因此,例如,字符串Herrenarmbanduhr
和heren
已匹配。
UPD:我有一些...中等数量的翻译专栏,所以与metaphone(column_a, 2) = metaphone(query, 2) OR metaphone(column_b, 2) = metaphone(query, 2)...
相匹配对我来说很痛苦......
答案 0 :(得分:1)
据我所知,这不支持开箱即用。
应该可以编写一个例程(可能是C语言函数?)来将tsvector转换为类似文本值的数组,然后使用其他搜索功能对这些函数进行语音搜索。由于初始转换和语音转换是不可变的,因此您可以索引输出。
但这不是开箱即用的支持,至少可以做一些工作。