我有一个包含四个语言翻译列的表格。例如,如果有description数据,则数据库中有四列:description_en、description_de、 description_it 和 description_fr。
我构建了一个索引和 tsv::tsvector
列,将所有这些列的数据收集到一个 tsvector
列中。
使用 tsv @@ to_tsquery(#{ search_query })
查询该表很好,但我想匹配拼写错误的 search_query
行。换句话说,执行模糊搜索。然而,我希望它尽可能快,因为我的 table 真的很大......
所以我想知道,在 Postgres 中是否有可能以某种方式将我的 tsv
列匹配到 metaphone(#{ search_query }, 2)
上?
因此,例如,字符串 Herrenarmbanduhr
和 heren
匹配。
UPD: 我有一些...中等数量的翻译专栏,因此将它们与 metaphone(column_a, 2) = metaphone(query, 2) OR metaphone(column_b, 2) 匹配) = metaphone(query, 2)...
对我来说很痛苦...
最佳答案
据我所知,这是不支持开箱即用的。
应该可以编写一个例程(也许是 C 语言函数?)将 tsvector 转换为文本值数组之类的东西,然后使用其他搜索功能对这些进行语音搜索。由于初始转换和语音转换是不可变的,因此您可以为输出编制索引。
但这不是开箱即用的支持,至少需要一些工作。
关于sql - PostgreSQL 可以对 tsvector 执行语音搜索吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844859/