zhparser

zhparser

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

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

ZhparserPostgreSQL中文分词全文检索SCWSGithub开源项目

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)

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

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

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

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多