我有一个包含大约 500 万条记录的 Postgres 表,我想找到与输入键最接近的匹配项。我尝试在 pg_trgm 模块中使用 trigram,但每次查询大约需要 5 秒,这对于我的需要来说太慢了。
有没有更快的方法在 Postgres 中进行模糊匹配?
我有一个包含大约 500 万条记录的 Postgres 表,我想找到与输入键最接近的匹配项。我尝试在 pg_trgm 模块中使用 trigram,但每次查询大约需要 5 秒,这对于我的需要来说太慢了。
有没有更快的方法在 Postgres 中进行模糊匹配?
看起来您的解释输出中对结果大小的估计已经偏离了。这并不意外,因为很难很好地估计全文搜索的结果。
这会导致 Postgresql 使用错误的查询计划。尝试禁用位图扫描(设置 enable_bitmapscan=off)并重试。
Soundex是另一种模糊匹配,但它可能非常模糊。如果可以的话,我会坚持使用三元组匹配。您是否可以使用另一个标准来使三元组搜索适用于较小的结果集?
根据您要查找的内容,Postgres 还可以对正则表达式进行匹配,而不是标准的“like”语法。它可能更适合您。