首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

Postgresql数据库安装中文全文搜索插件zhparser的问题

2023-11-12 来源:花图问答

在PG数据库的基础上加装zhparser中文全文搜索插件,说实话,挺怕这些单独编译安装的插件的,因为安装PG数据库方法的不同,最后可能导致安装的插件各种安装不上,这里说一下我遇到的坑,系统环境是Centos7, yum安装的PG9.6。

1、INSTALL

关于安装方法,可以直接到上面看https://github.com/amutu/zhparser

2、make的时候缺少pgxs.mk
[root@az zhparser]# PG_CONFIG=/usr/pgsql-9.6/bin/pg_config make && make installMakefile:19: /usr/pgsql-9.6/lib/pgxs/src/makefiles/pgxs.mk: No such file or directorymake: *** No rule to make target `/usr/pgsql-9.6/lib/pgxs/src/makefiles/pgxs.mk'. Stop.

解决方法:

[root@az zhparser]# export PATH=/usr/pgsql-9.6/bin:$PATH[root@az zhparser]# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm[root@az zhparser]# yum install postgresql96-devel.x86_64
3、创建zhparser的时候提示Permission denied
ERROR: could not open file "/usr/pgsql-9.6/share/tsearch_data/qc_dict_jupiter.txt" for writing: Permission deniedHINT: COPY TO instructs the PostgreSQL server process to write a file. You may want a client-side facility such as psql's copy.CONTEXT: SQL statement "copy (select word, tf, idf, attr from zhparser.zhprs_custom_word) to '/usr/pgsql-9.6/share/tsearch_data/qc_dict_jupiter.txt' encoding 'utf8'"PL/pgSQL function sync_zhprs_custom_word() line 11 at EXECUTE

解决方法:

chown -R postgres:postgres /usr/pgsql-9.6/share/tsearch_data/
4、ERROR: ?must be superuser to alter superusers
[root@az data]# sudo -u postgres /usr/pgsql-9.6/bin/postgres --single -D /var/lib/pgsql/9.6/data/PostgreSQL stand-alone backend 9.6backend> ALTER USER postgres WITH SUPERUSER;backend>

Postgresql数据库安装中文全文搜索插件zhparser的问题

标签:cti   class   use   RoCE   sql数据库   单独编译   server   miss   关于   

小编还为您整理了以下内容,可能对您也有帮助:

Postgresql 11 中文分词插件zhparser centos 6.5 安装报错

在PG数据库的基础上加装zhparser中文全文搜索插件,说实话,挺怕这些单独编译安装的插件的,因为安装PG数据库方法的不同,最后可能导致安装的插件各种安装不上,这里说一下我遇到的坑,系统环境是Centos7, yum安装的PG9.6。
1、INSTALL
关于安装方法,可以直接到上面看https://github.com/amutu/zhparser
2、make的时候缺少pgxs.mk
[root@az zhparser]# PG_CONFIG=/usr/pgsql-9.6/bin/pg_config make && make installMakefile:19: /usr/pgsql-9.6/lib/pgxs/src/makefiles/pgxs.mk: No such file or directory
make: *** No rule to make target `/usr/pgsql-9.6/lib/pgxs/src/makefiles/pgxs.mk'. Stop.

解决方法:
[root@az zhparser]# export PATH=/usr/pgsql-9.6/bin:$PATH[root@az zhparser]# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm[root@az zhparser]# yum install postgresql96-devel.x86_64

3、创建zhparser的时候提示Permission denied
ERROR: could not open file "/usr/pgsql-9.6/share/tsearch_data/qc_dict_jupiter.txt" for writing: Permission denied
HINT: COPY TO instructs the PostgreSQL server process to write a file. You may want a client-side facility such as psql's \copy.CONTEXT: SQL statement "copy (select word, tf, idf, attr from zhparser.zhprs_custom_word) to '/usr/pgsql-9.6/share/tsearch_data/qc_dict_jupiter.txt' encoding 'utf8'"PL/pgSQL function sync_zhprs_custom_word() line 11 at EXECUTE

解决方法:
chown -R postgres:postgres /usr/pgsql-9.6/share/tsearch_data/

4、ERROR: must be superuser to alter superusers
[root@az data]# sudo -u postgres /usr/pgsql-9.6/bin/postgres --single -D /var/lib/pgsql/9.6/data/
PostgreSQL stand-alone backend 9.6backend> ALTER USER postgres WITH SUPERUSER;backend>

更多相关知识可以参考《Linux就该这么学》

Postgresql 11 中文分词插件zhparser centos 6.5 安装报错

在PG数据库的基础上加装zhparser中文全文搜索插件,说实话,挺怕这些单独编译安装的插件的,因为安装PG数据库方法的不同,最后可能导致安装的插件各种安装不上,这里说一下我遇到的坑,系统环境是Centos7, yum安装的PG9.6。
1、INSTALL
关于安装方法,可以直接到上面看https://github.com/amutu/zhparser
2、make的时候缺少pgxs.mk
[root@az zhparser]# PG_CONFIG=/usr/pgsql-9.6/bin/pg_config make && make installMakefile:19: /usr/pgsql-9.6/lib/pgxs/src/makefiles/pgxs.mk: No such file or directory
make: *** No rule to make target `/usr/pgsql-9.6/lib/pgxs/src/makefiles/pgxs.mk'. Stop.

解决方法:
[root@az zhparser]# export PATH=/usr/pgsql-9.6/bin:$PATH[root@az zhparser]# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm[root@az zhparser]# yum install postgresql96-devel.x86_64

3、创建zhparser的时候提示Permission denied
ERROR: could not open file "/usr/pgsql-9.6/share/tsearch_data/qc_dict_jupiter.txt" for writing: Permission denied
HINT: COPY TO instructs the PostgreSQL server process to write a file. You may want a client-side facility such as psql's \copy.CONTEXT: SQL statement "copy (select word, tf, idf, attr from zhparser.zhprs_custom_word) to '/usr/pgsql-9.6/share/tsearch_data/qc_dict_jupiter.txt' encoding 'utf8'"PL/pgSQL function sync_zhprs_custom_word() line 11 at EXECUTE

解决方法:
chown -R postgres:postgres /usr/pgsql-9.6/share/tsearch_data/

4、ERROR: must be superuser to alter superusers
[root@az data]# sudo -u postgres /usr/pgsql-9.6/bin/postgres --single -D /var/lib/pgsql/9.6/data/
PostgreSQL stand-alone backend 9.6backend> ALTER USER postgres WITH SUPERUSER;backend>

更多相关知识可以参考《Linux就该这么学》

pg数据库安装问题

链接:https://blog.csdn.net/li_yi_kun?t=1
建议用Homebrew安装postgreSQL
先安装Homebrew ,但是Homebrew依赖于Xcode Command Line Tools,所以需先打开终端执行:

xcode-select --install
在终端中执行安装Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
检查是否已安装成功:
$ brew -v
Homebrew 1.6.1
Homebrew/homebrew-core (git revision 0aeb7; last commit 2018-04-12)
homebrew安装postgreSQL:
brew install postgresql
安装完postgresql之后需要初始化数据库:
initdb /usr/local/var/postgres -E utf8

如果你不初始化,那么db的路径就是上面的/usr/local/var/postgres(在MacOS 10.11上),数据库编码类型就是utf8.
设置开机启动postgresql服务:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

第一句将postgresql的配置plist文件做软连接至系统的对应路径下,第二句加载其中的一个plist文件.有可能你的postgresql不是通过homebrew安装的,你的plist文件名会略有不同,你只需要自行到/usr/local/opt/postgresql/中找到正确的文件名就可以了.

下面是启动和停止postgresql服务的指令:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres追问pc的啦

pg数据库安装问题

链接:https://blog.csdn.net/li_yi_kun?t=1
建议用Homebrew安装postgreSQL
先安装Homebrew ,但是Homebrew依赖于Xcode Command Line Tools,所以需先打开终端执行:

xcode-select --install
在终端中执行安装Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
检查是否已安装成功:
$ brew -v
Homebrew 1.6.1
Homebrew/homebrew-core (git revision 0aeb7; last commit 2018-04-12)
homebrew安装postgreSQL:
brew install postgresql
安装完postgresql之后需要初始化数据库:
initdb /usr/local/var/postgres -E utf8

如果你不初始化,那么db的路径就是上面的/usr/local/var/postgres(在MacOS 10.11上),数据库编码类型就是utf8.
设置开机启动postgresql服务:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

第一句将postgresql的配置plist文件做软连接至系统的对应路径下,第二句加载其中的一个plist文件.有可能你的postgresql不是通过homebrew安装的,你的plist文件名会略有不同,你只需要自行到/usr/local/opt/postgresql/中找到正确的文件名就可以了.

下面是启动和停止postgresql服务的指令:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres追问pc的啦

PostgreSQL全文检索简介

PostgreSQL自带有一个简易的全文检索引擎,可以实现小规模数据量的全文检索功能。本文我们将引导介绍一下这个功能,对于小数据量的搜索这个功能是足够使用的,而无需搭建额外的ES等重量级的全文检索服务器。

PG的全文检索操作符是 @@ ,当一个 tsvector (文档)和 tsquery (条件)匹配时返回 true ,并且前后顺序无影响:

和普通的SQL查询一样,只要在 WHERE 条件中使用这个符号就代表使用全文检索条件筛选文档了。如:

@@ 操作符支持隐式转换,对于 text 类型可以无需强类型转换( ::tsvector 或 to_tsvector(config_name, text) ),所以这个操作符实际支持的参数类型是这样的:

tsquery 查询条件并不是简单的正则,而是一组搜索术语,使用并且使用布尔操作符 & (AND)、 | (OR)和 ! (NOT)来组合它们,还有短语搜索操作符 <-> (FOLLOWED BY)。更详细的语法参见 此文档 。

此外,PostgreSQL还提供了两个相对简化的版本 plainto_tsquery 和 phraseto_tsquery 。

plainto_tsquery ( plainto_tsquery([ config regconfig, ] querytext text) returns tsquery )用户将未格式化的 text 经过分词之后,插入 & 符号转为 tsquery :

phraseto_tsquery ( phraseto_tsquery([ config regconfig, ] querytext text) returns tsquery )行为和 plainto_tsquery 行为类似,但是分词之后不是插入 & 而是 <-> (FOLLOWED BY):

使用索引可以加快全文检索的速度。对于全文检索来说,可选的索引类型是 GIN (通用倒排索引)和 GIST (通用搜索树),官方文档更推荐使用 GIN索引 。创建一个 GIN 索引的范例:

也可以是一个连接列:

还可以单独创建一个 tsvector 列,为这个列创建索引:

除了普通的 ORDER BY 条件之外,PostgreSQL为全文检索提供了两个可选的排序函数 ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 和 ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 ,以便实现基于 权重 的排序。

此外,对于PostgreSQL 9.6以上的版本还可以使用 RUM index 排序。(注意,这个是扩展,默认不包含)。

PostgreSQL默认的分词字典中并不包含中文分词字典,因此我们必须手工引入。目前一个比较好的项目是 zhparser ,同时这个插件也是阿里云的RDS默认包含的。安装和启用没什么好说的。值得一提的是分词配置参数。

在 CREATE EXTENSION 之后,必须配置分词参数才能正确进行分词和查找,否则什么都查不到。官方文档提供的一个配置策略是:

n,v,a,i,e,l 这几个字母分别表示一种token策略,只启用了这几种token mapping,其余则被屏蔽。具体支持的参数和含义可以用 \dFp+ zhparser 显示:

WITH simple 表示词典使用的是内置的simple词典,即仅做小写转换。根据需要可以灵活定义词典和token映射,以实现屏蔽词和同义词归并等功能。

比如我们看下面这个例子:

可以看到 江淮 这个词组在查询的时候被忽略了,我们启用 j (abbreviation,简称)再看看结果:

所以实际使用中要设置合理的token types,过少将导致搜索结果不准确,过多将导致性能下降。此外,还有一些诸如 短词复合: zhparser.multi_short = f 这一类的控制分词结果的选项,根据实际使用酌情开启。

discuz怎么搭配PostgreSQL(简称PgSQL,或者是PG数据库)来安装使用?我想搭建:土土土bbs250!在线坐等

土土土bbs250 看着本身就很不错啦,打开速度也还可以,干嘛还要搞什么PgSQL呢?discuz是比较经典的php框架本身就不兼容PostgreSQL数据库,discuz和MySQL就是非常完美的搭配。如果你非要使用PostgreSQL数据库,可以尝试换别的php框架,比如TP框架,或者设计网站的时候使用asp来开发。PostgreSQL数据库真的不适合discuz,discuz直接搭配MySQL就非常完美了,真的,抗一个亿的流量基本上没什么压力。

discuz怎么搭配PostgreSQL(简称PgSQL,或者是PG数据库)来安装使用?我想搭建:土土土bbs250!在线坐等

土土土bbs250 看着本身就很不错啦,打开速度也还可以,干嘛还要搞什么PgSQL呢?discuz是比较经典的php框架本身就不兼容PostgreSQL数据库,discuz和MySQL就是非常完美的搭配。如果你非要使用PostgreSQL数据库,可以尝试换别的php框架,比如TP框架,或者设计网站的时候使用asp来开发。PostgreSQL数据库真的不适合discuz,discuz直接搭配MySQL就非常完美了,真的,抗一个亿的流量基本上没什么压力。

postgresql 数据库问题3

错误代码中已经提示了使用perform来替代,说明你的select语句,就必须写到一个变量中。

$$
declare v_cmd text;
begin

v_cmd='select count(*) from "user" where username=$1 and password=$2';
PERFORM exec_shell(v_cmd);

按照这个去修改,这样就可以了,同时建立一个exec_shell()的函数。


CREATE OR REPLACE FUNCTION exec_shell(character varying)
  RETURNS integer AS
$BODY$
   system($_[0]);
   return 1;
$BODY$
  LANGUAGE plperlu VOLATILE
  COST 1;

postgresql 数据库问题3

错误代码中已经提示了使用perform来替代,说明你的select语句,就必须写到一个变量中。

$$
declare v_cmd text;
begin

v_cmd='select count(*) from "user" where username=$1 and password=$2';
PERFORM exec_shell(v_cmd);

按照这个去修改,这样就可以了,同时建立一个exec_shell()的函数。


CREATE OR REPLACE FUNCTION exec_shell(character varying)
  RETURNS integer AS
$BODY$
   system($_[0]);
   return 1;
$BODY$
  LANGUAGE plperlu VOLATILE
  COST 1;

navicat postgresql连接数据库后,中文有乱码问题如何解决

最好都用utf-8

如何安装PostgreSQL 9.2.4 For Windows

一、安装准备1.安装介绍可浏览PostgreSQL在Windows

平台下的下载页面,了解各种下载和安装PostgreSQL的方法。

在Windows上安装PostgreSQL最简单的方法是从前面的下载页面下载由EnterpriseDB公司维护的一键安装程序,这个安装程序将在Windows上安装一个已编译好的PostgreSQL数据库软件、一个图形界面的管理程序pgAdmin、可选择的有附加功能的增值模块和过程语言。另外一个名叫StackBuilder的软件也会安装上,它可以帮助你下载或安装附加模块,如ODBC或JDBC驱动

2.安装环境Win7旗舰版64位

postgresql-9.2.4-1-windows-x64.exe

二、安装过程1.

开始安装2.

选择安装目录3.

选择数据存放目录

4.选择数据存放目录

该目录在以后的使用过程中可以修改调整。5.

输入超级用户口令6.

监听端口号设置

默认即可,以后使用中可以通过修改postgresql.conf进行调整。7.

高级选项-语言环境设置选择Default locale

即可,中文简体

新加坡(Chinese[Simplified],

Singapore)未做尝试,据说会导致查询结果和排序效果不正确。8.

安装进度9.

安装结束之后可以利用

Stack Builder工具安装PostgreSql相关插件、驱动或工具。

选择<远程服务器

进行软件下载及安装。

至此,完整软件包的安装结束。

显示全文