Postgresql 大表的模糊搜索

Postgresql 大表的模糊搜索,postgresql,autocomplete,lucene,bigdata,fuzzy-search,Postgresql,Autocomplete,Lucene,Bigdata,Fuzzy Search,我有一个非常大的PostgreSQL表,有1200万个名称,我想展示一个自动完成的表。以前我使用了一个我喜欢的“someth%”子句,但我对它不是很满意。例如,它不按相似性排序,任何拼写错误都会导致错误或没有结果。字段是一个字符串,通常是一个或两个单词(在任何语言中)。我需要快速响应,因为建议会在用户键入时实时显示给用户(即自动完成)。我不能将模糊匹配限制为一个子集,因为所有名称都同等重要。我也可以说,大多数名字是不同的 我试过pg_trgm,但即使是杜松子酒指数也很慢。搜索类似于“html”的

我有一个非常大的PostgreSQL表,有1200万个名称,我想展示一个自动完成的表。以前我使用了一个
我喜欢的“someth%”
子句,但我对它不是很满意。例如,它不按相似性排序,任何拼写错误都会导致错误或没有结果。字段是一个字符串,通常是一个或两个单词(在任何语言中)。我需要快速响应,因为建议会在用户键入时实时显示给用户(即自动完成)。我不能将模糊匹配限制为一个子集,因为所有名称都同等重要。我也可以说,大多数名字是不同的

我试过pg_trgm,但即使是杜松子酒指数也很慢。搜索类似于“html”的名称需要几毫秒,但是——不要问我为什么——像“htm”这样的其他搜索需要很多秒——例如25秒。其他人也报告了pg_trgm在大型表上的性能问题

我能做些什么来有效地显示该字段的自动完成吗?
全文搜索引擎(如Lucene、Solr)是合适的解决方案吗?或者我也会遇到同样的低效问题?

您是否查看了全文搜索@FrankHeikens这不是我想要的,它不支持模糊匹配:“当与全文索引结合使用时,三元匹配是一个非常有用的工具。特别是它可以帮助识别拼写错误的输入词,而这些词不会被全文搜索机制直接匹配。”我知道全文允许使用某种同义词表,但这不是一回事。尝试ElasticSearch或Wise查看simhash(或fuzzbuzz)。