有没有比pg_trgm更快的postgres模糊匹配?

时间:2009-06-11 00:38:15

标签: database postgresql indexing fuzzy-search

我有一个包含约500万条记录的Postgres表,我希望找到与输入键最匹配的匹配项。我尝试在pg_trgm模块中使用trigrams,但每次查询大约花了5秒钟,这对我的需求来说太慢了。

在Postgres中进行模糊匹配是否有更快的方法?

3 个答案:

答案 0 :(得分:2)

看起来你的解释输出中结果大小的估计是偏离的。这并不意外,因为很难很好地估计全文搜索的结果。

这会导致Postgresql使用错误的查询计划。尝试禁用位图扫描(设置enable_bitmapscan = off)并重试。

答案 1 :(得分:0)

Soundex是另一种模糊匹配,但它可以非常模糊。如果可以的话,我会坚持使用三元组匹配。是否有另一个标准可用于使三元组搜索在较小的结果集上工作?

答案 2 :(得分:0)

根据您的要求,Postgres还可以对正则表达式进行匹配,而不是标准的“喜欢”语法。它可能更适合你。