postgres中的中文分词zhparser

简介:

postgres中的中文分词zhparser

postgres中的中文分词方法

基本查了下网络,postgres的中文分词大概有两种方法:

  • Bamboo
  • zhparser

其中的Bamboo安装和使用都比较复杂,所以我选择的是zhparser

zhparse基于scws

scws是简易中文分词系统的缩写,它的原理其实很简单,基于词典,将文本中的内容按照词典进行分词,提取关键字等。github上的地址在这里。它是xunsearch的核心分词系统。

zhparser是基于scws来做的postgres的扩展。

安装

基本按照zhparser 中的步骤就可以了。

使用

在postgres.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'

虽然项目文档说用txt也是可以的,但是我自己尝试过的时候,自有词典只能使用xdb

sql使用

按照文档说明

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

在这三步之后,你就创建了一个testzhcfg的解析器

to_tsvector, to_tsquery 其实都是有第一个参数的,第一个参数表示解析器是什么。比如你想要进行文本搜索,可以使用下面的语句:

SELECT id FROM question_view
            WHERE to_tsvector('testzhcfg', content) @@ to_tsquery('testzhcfg', '宝马') AND status = 1  ORDER BY id DESC

这个语句是基于视图question_view的


本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/4408968.html,如需转载请自行联系原作者

相关文章
|
5月前
|
XML 编解码 数据格式
python报错 ‘utf-8‘ codec can‘t encode characters in position xxxx-xxxx: surrogates not allowed
python报错 ‘utf-8‘ codec can‘t encode characters in position xxxx-xxxx: surrogates not allowed
150 0
|
存储 关系型数据库 Linux
centos7 postgresql10 安装 zhparser,配置中文全文检索
centos7 postgresql10 安装 zhparser,配置中文全文检索
227 0
centos7 postgresql10 安装 zhparser,配置中文全文检索
|
JSON 关系型数据库 MySQL
MySQL - In this situation, path expressions may not contain the * and ** tokens.
MySQL - In this situation, path expressions may not contain the * and ** tokens.
333 0
|
编解码 JSON 数据格式
Python常见问题 - requests请求参数包含中文报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 13-14: 小明 is not valid Latin-1. Use body.encode('utf-8')
Python常见问题 - requests请求参数包含中文报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 13-14: 小明 is not valid Latin-1. Use body.encode('utf-8')
1644 0
|
自然语言处理
Lucene QueryParser的一个"解析异常"
假期重新梳理了下之前在新浪博客的历史文档(新浪博客已下线),将一些内容重新搬到这里。 本文Lucene QueryParser的一个解析异常分析。
89 0
|
自然语言处理 关系型数据库 人工智能
【错误记录】国际化报错 ( “xxx“ is not translated in “zh“ (Chinese) )
【错误记录】国际化报错 ( “xxx“ is not translated in “zh“ (Chinese) )
279 0
【错误记录】国际化报错 ( “xxx“ is not translated in “zh“ (Chinese) )
|
Web App开发 机器学习/深度学习 Shell