【发布时间】:2015-04-16 19:03:50
【问题描述】:
我有一个现有的 Postgres 9.3 数据库,其中包含一个带有 varchar 列的表。
Table "public.frontend_chemical"
Column | Type | Modifiers
-----------+------------------------+-----------
bnf_code | character varying(9) | not null
chem_name | character varying(200) | not null
我想在chem_name 列上运行全文搜索。
我一直在阅读this article,建议步骤如下:
- 添加新的
tsvector列:ALTER TABLE frontend_chemical ADD COLUMN fts_document tsvector; - 创建一个函数以将
chem_name列映射到文档,并创建一个触发器以使其保持更新。 - 在列上创建 GIN 索引:
CREATE INDEX chem_fts_index ON frontend_chemical USING gin(fts_document);
然后我应该能够运行全文搜索查询,例如:SELECT COUNT(*) FROM frontend_chemical WHERE fts_document @@ 'statin';。
首先,一般流程是否正确?
其次,如何将chem_name 列中的所有现有条目映射到fts_document 列?文章中的示例似乎只在更新chem_name 列时更新document 列,而我现有的数据库很大。
【问题讨论】:
标签: postgresql