这个方法是借用PG的插件zhparser,要求PG的版本在9.2以上,在GP上实现的话,目前需要GP6.0以上的版本,因为6.0集成的是 9.4beta1。
由于是在集群上使用,所以下面的所有操作都要同时在每个节点上操作。
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;
SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大 了保障房的建设和投入力度 。2011年,保障房进入了更大规模的建设阶段。住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,要继续推进保障性安居工程建设。');
SELECT to_tsvector('testzhcfg','“今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历>史纪录。”陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。');
SELECT to_tsquery('testzhcfg', '保障房资金压力');
使用自动以词库:
** 详解 TXT 词库的写法 (TXT词库目前已兼容 cli/scws_gen_dict 所用的文本词库) **
注意:1.自定义词典的格式可以是文本TXT,也可以是二进制的XDB格式。XDB格式效率更高,适合大辞典使用。可以使用scws自带的工具scws-gen-dict将文本词典转换为XDB格式;2.zhparser默认的词典是简体中文,如果需要繁体中文,可以在这里下载已经生成好的XDB格式此词典。3.自定义词典的例子可以参考dict_extra.txt。更多信息参见SCWS官方文档。
配置
编辑master节点的postgresql.conf文件,增加以下内容:
zhparser.punctuation_ignore = f 忽略所有的标点等特殊符号
zhparser.seg_with_duality = f 闲散文字自动以二字分词法聚合
zhparser.dict_in_memory = f 将词典全部加载到内存里:
zhparser.multi_short = f 短词复合
zhparser.multi_duality = f 散字二元复合
zhparser.multi_zmain = f 重要单字复合
zhparser.multi_zall = f 全部单字复合
设置自定义词典
zhparser.extra_dicts = 'dict_extra.txt,mydict.xdb'