用于两个词搜索的 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 甚至更高。
极光 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 甚至更高。