PostgreSQL全文搜索索引

时间:2018-02-13 16:49:50

标签: postgresql indexing full-text-search

我有一个包含文本字段的表格,我需要高效的全文搜索。我发现了一些技术,我想通过基于文本字段创建额外的ts_vector字段来扩展模式更好,或者我可以保存我的模式并以这种方式创建索引:

CREATE INDEX pgweb_idx ON pgweb USING GIN (to_tsvector('english', title || ' ' || body));

效率意义上有什么不同吗?

1 个答案:

答案 0 :(得分:2)

这两种策略都有效。如果您只有索引,则需要确保查询使用where子句中的完全相同表达式作为索引中的表达式,否则将不使用索引。例如。 where ts_vector('english', title) ....不会使用该索引。

带有ts_vector()的计算列将需要自动更新触发器,因为Postgres尚未(仍)具有持久计算列。所以索引"只有"解决方案可能会更快,因为它消除了触发器的开销。