主要观点:介绍在 Rails 应用中使用 Postgres 全文搜索的方法及优化。
关键信息:
- 有 LIKE/ILIKE、pg_trgm、全文搜索等 Postgres 搜索选项及各自用途、可索引性和性能。
- 全文搜索基础,如
to_tsvector
函数处理文本成tsvector
数据类型等。 - 在 Rails 中使用
pg_search
Gem 实现全文搜索,有多种配置方式及搜索范围。 - 优化 Rails 中全文搜索查询,通过添加预计算的
tsvector
列并添加索引,从 130ms 优化到 7ms。 - 展示实际数据集的搜索结果,证明方法的准确性和有效性。
重要细节: pg_search
默认使用simple
字典,可改为english
字典,还可给列添加权重。- 优化时需将
schema_format
从:ruby
切换到:sql
,添加tsvector
列时需注意其为“Stored”列及对表的影响。 - 可使用 GIN 索引加快全文搜索,添加索引时可并发避免锁问题。
- 作者 Leigh Halliday 是 pganalyze 博客的客座作者,在加拿大工作,在其博客和 YouTube 上分享相关内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。