参考
PostgreSQL10实时全文检索和分词,相似搜索,模糊匹配实现类似Google搜索自动提示
这个帖子的方法比较不错,值得试试,被吸引的点如下:
CREATE INDEX name_idx ON goods USING GIN(to_tsvector('English',name));
实例(已过时)
加载全文索引插件zhparser (需要具有superuser权限加载)
drop extension if exists zhparser cascade;
create extension zhparser;
create text search configuration chinesecfg (parser = zhparser);
alter text search configuration chinesecfg add mapping for n,v,a,i,e,l with simple;
建表
CREATE TABLE tb_staticsite (
siteid varchar(64),
sitedesc varchar(4000),
sitetype bigint,
longitude varchar(64),
latitude varchar(64),
siteaddress varchar(500)
);
加全文索引字段
ALTER TABLE tb_staticsite add column sitedesc_ts tsvector;
ALTER TABLE tb_staticsite add column siteaddress_ts tsvector;
建全文索引
CREATE INDEX idx_staticsite_sitedesc ON tb_staticsite USING gin(sitedesc_ts);
CREATE INDEX idx_staticsite_siteaddress ON tb_staticsite USING gin(siteaddress_ts);
指定词库
UPDATE tb_staticsite SET sitedesc_ts =to_tsvector('chinesecfg', sitedesc);
UPDATE tb_staticsite SET siteaddress_ts =to_tsvector('chinesecfg', siteaddress);
/*触发器性能不佳,建议使用job定时执行*/
查询
SELECT * FROM tb_staticsite WHERE sitedesc_ts @@ to_tsquery('杭州市');
SELECT * FROM tb_staticsite WHERE siteaddress_ts @@ to_tsquery('浙江省');
文档信息
- 本文作者:fei
- 本文链接:https://ayee1616166.github.io/2016/11/03/PostgreSQL%E4%B9%8Bzhparser%E5%85%A8%E6%96%87%E7%B4%A2%E5%BC%95/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)