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