sql - PostgreSQL 可以对 tsvector 执行语音搜索吗?

标签 sql postgresql full-text-search fuzzy-search

我有一个包含四个语言翻译列的表格。例如,如果有description数据,则数据库中有四列:description_endescription_de description_itdescription_fr

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

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

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

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

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/

相关文章:

sql - 在 JOIN 查询中使用限制/偏移量

sql - 如何检索特定日期范围内的数据?

performance - 架构和索引以及主键 : Differences in lookup performance?

php - 使用 "AS score"从mysql全文搜索返回相关性分数

c# - 从数据库获取数据到 ComboBox

sql - 从 SQL Server 数据库中选择任意范围的记录

sql - 在 SQL Server 中,我想将字符串与 '~' 分开

postgresql - 恢复多个表 postgresql pg_dump

mysql - 在具有多个字符串的记录中搜索字符串的一部分

full-text-search - Notepad++ 搜索忽略空格?