用于两个词搜索的 Postgres gin 索引

Postgres gin Index for two words search

极光 Postgres 12.8

通配符搜索在每个有数百万行的多个表上使用 gin 索引完美运行。

CREATE INDEX index_name  ON table_name USING gin  (column_name gin_trgm_ops);
select col1, col2 from table_name where column_name ~* ('wild_text');

在搜索'two-letter words'的新需求到来之前,生活是美好的。

select col1, col2 from table_name where column_name ~* ('aa');

由于'gin_trgm_ops'创建了“八卦索引”,所以1和2字符搜索绕过索引,不用解释接下来会发生什么。

问题: 与 'gin_trgm_ops' 不同,是否有任何选项可以创建支持 1 和 2 字符搜索的杜松子酒索引?或者我的情况的任何其他解决方案?

愿望

没有,没有好的解决办法。但这与其说是缺少功能的问题,不如说是原则问题:非常短的搜索字符串往往会产生大的结果集,而索引对此无能为力。

我的建议是将搜索字符串的长度限制在 4 甚至更高。