Project Icon

zhparser

基于SCWS的PostgreSQL中文全文搜索扩展

zhparser是一个基于SCWS的PostgreSQL中文全文搜索扩展,支持自定义词典和灵活配置分词行为。该扩展能有效解析中文文本,适用于PostgreSQL 9.2及以上版本的数据库。它提供多种安装方式,包括Docker快速部署,并支持复杂查询功能。zhparser为开发者提供了详细的使用说明和配置选项,方便实现高效的中文全文搜索功能。

Zhparser

Zhparser 是一个用于中文(普通话)全文检索的 PostgreSQL 扩展。它基于 Simple Chinese Word Segmentation(SCWS) 实现了一个中文语言解析器。

项目主页:http://blog.amutu.com/zhparser/

注意:对于分词结果不满意或需要调试分词结果的用户,可以在此页面进行调试:http://www.xunsearch.com/scws/demo/v48.php

Docker快速体验

运行容器:

docker run --name pgzhparser -d -e POSTGRES_PASSWORD=somepassword zhparser/zhparser:bookworm-16

以 postgres 用户身份登录 postgres 数据库:

docker exec -it pgzhparser psql postgres postgres

创建扩展并使用:

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;
SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动');

您将得到以下结果: tokid | token
-------+-------
101 | hello
101 | world
117 | !
101 | 2010
113 | 年
118 | 保障
110 | 房建
118 | 设在
110 | 全国
110 | 范围
102 | 内
118 | 获
97 | 全面
118 | 启动
(14 行记录)

更多 docker 镜像信息,请访问:zhparser 的 Docker Hub
zhparser 的 docker 镜像基于 PostgreSQL 的官方 docker 镜像构建,更多用法请参见:https://hub.docker.com/_/postgres

安装

0.前置条件

zhparser 支持 PostgreSQL 9.2 及以上版本,请确保您的 PG 版本符合要求。 对于 REDHAT/CentOS Linux 系统,请确保安装了相关的库和头文件,它们通常包含在 postgresql-devel 软件包中。

1.安装 SCWS

 wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 | tar xf -

 cd scws-1.2.3 ; ./configure ; make install

注意:在 FreeBSD release 10 及以上版本上运行 configure 时,需要添加 --with-pic 选项。

如果是从 GitHub 上下载的 scws 源码,需要先运行以下命令生成 configure 文件:

 touch README;aclocal;autoconf;autoheader;libtoolize;automake --add-missing

2.下载 zhparser 源码

 git clone https://github.com/amutu/zhparser.git

3.编译和安装 zhparser

 make && make install

如果 scws 的路径不在默认的 /usr/local 下,可以设置 SCWS_HOME,例如:SCWS_HOME=/usr make && make install

如果您同时安装了多个版本的 PostgreSQL,可以通过指定 PG_CONFIG 来为特定版本编译扩展:

 PG_CONFIG=/usr/lib/postgresql/9.5/bin/pg_config make && make install

注意:在 *BSD 系统上编译安装时,使用 gmake 代替 make

4.创建扩展

 psql dbname superuser -c 'CREATE EXTENSION zhparser'

配置

以下配置适用于 PG9.2 及以上版本,这些选项用于控制字典加载行为和分词行为。所有选项都是可选的,默认值均为 false(即如果未在配置文件中设置这些选项,zhparser 的行为与将以下选项设置为 false 一致)。

忽略所有标点等特殊符号: 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 自带的词典,用户可以添加自定义词典,自定义词典的优先级高于自带词典。自定义词典文件必须放在 share/tsearch_data 目录中,zhparser 根据文件扩展名确定词典的格式类型,.txt 扩展名表示词典是文本格式,.xdb 扩展名表示词典是 xdb 格式,多个文件使用逗号分隔,词典的分词优先级由低到高,如:

zhparser.extra_dicts = 'dict_extra.txt,mydict.xdb'

注意:zhparser.extra_dicts 和 zhparser.dict_in_memory 这两个选项需要在 backend 启动前设置(可以在配置文件中修改然后 reload,之后新建连接会生效),其他选项可以随时在 session 中设置生效。zhparser 的选项与 scws 相关的选项对应,关于这些选项的含义,可以参考 scws 的文档:http://www.xunsearch.com/scws/docs.php#libscws

示例

-- 创建扩展

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;

-- ts_parse

SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大 了保障房的建设和投入力度 。2011年,保障房进入了更大规模的建设阶段。住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,要继续推进保障性安居工程建设。');

-- 测试 to_tsvector

SELECT to_tsvector('testzhcfg','"今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历史纪录。"陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。');

-- 测试 to_tsquery

SELECT to_tsquery('testzhcfg', '保障房资金压力');

自定义词库

** TXT 词库的详细写法说明(TXT 词库目前已兼容 cli/scws_gen_dict 所用的文本词库)**

  1. 每行一条记录,以 # 或分号开头的行视为注释,将被忽略跳过

  2. 每行由 4 个字段组成,依次为"词语"(由中文字或 3 个以下的字母组成)、"TF"、"IDF"、"词性",字段之间使用空格或制表符分隔,数量不限,可自行对齐以美化

  3. 除"词语"外,其他字段可省略不写。若省略,TF 和 IDF 默认值为 1.0,词性默认为 "@"

  4. 由于 TXT 库是动态加载的(内部监测文件修改时间自动转换成 xdb 存储于系统临时目录),因此建议 TXT 词库不要过大

  5. 删除词的方法是将词性设为"!",这表示该词无效,即使在其他核心库中存在该词也视为无效 注意:1.自定义词典的格式可以是文本TXT,也可以是二进制的XDB格式。XDB格式效率更高,适合大辞典使用。可以使用scws自带的工具scws-gen-dict将文本词典转换为XDB格式;2.zhparser默认的词典是简体中文,如果需要繁体中文,可以在这里下载已经生成好的XDB格式词典。3.自定义词典的例子可以参考dict_extra.txt。更多信息请参见SCWS官方文档。

自定义词库 2.1

自定义词库2.1增加了自定义词库的易用性,并兼容1.0提供的功能

自定义词库需要超级用户权限,自定义库是数据库级别的(不是实例级),每个数据库拥有自己的自定义分词,并存储在data目录下base/数据库ID下(2.0版本存储在share/tsearch_data下)

生产环境版本升级(新环境直接安装即可): alter extension zhparser update ;

test=# SELECT * FROM ts_parse('zhparser', '保障房资金压力');
 tokid | token
-------+-------
   118 | 保障
   110 | 房
   110 | 资金
   110 | 压力

test=# insert into zhparser.zhprs_custom_word values('资金压力');
--删除词insert into zhprs_custom_word(word, attr) values('word', '!');
--\d zhprs_custom_word 查看其表结构,支持TD, IDF
test=# select sync_zhprs_custom_word();
 sync_zhprs_custom_word
------------------------

(1 row)

test=# \q --同步后重新建立连接
[lzzhang@lzzhang-pc bin]$ ./psql -U lzzhang -d test -p 1600
test=# SELECT * FROM ts_parse('zhparser', '保障房资金压力');
 tokid |  token
-------+----------
   118 | 保障
   110 | 房
   120 | 资金压力

版权

zhparser

部分版权所有 (c) 2012-2017,Jov(amutu@amutu.com)

特此授予免费使用、复制、修改和分发本软件及其文档的权限,无需付费,也无需书面协议,前提是上述版权声明和本段以及以下两段出现在所有副本中。

在任何情况下,加利福尼亚大学均不对任何一方因使用本软件及其文档而造成的直接、间接、特殊、偶然或后果性损害(包括利润损失)承担责任,即使加利福尼亚大学已被告知可能发生此类损害。

加利福尼亚大学特别声明不提供任何担保,包括但不限于对适销性和特定用途适用性的暗示担保。此处提供的软件是"按原样"提供的,加利福尼亚大学没有义务提供维护、支持、更新、增强或修改。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号