进入docker容器
docker exec -it postgres /bin/bash
安装工具
apt-get update && apt-get install -y --no-install-recommends \
gcc \
make \
libc-dev \
postgresql-server-dev-$PG_MAJOR \
wget \
tar
安装前置scw
mkdir build \
&& cd build
wget -q -O - http://www.xunsearch.com/scws/down/scws-SCWS_VERSION 1.2.3.tar.bz2 | tar xjf -
cd scws-1.2.3
./configure
make install
安装zhparser
wget -q -O - https://github.com/amutu/zhparser/archive/master.tar.gz | tar xzf -
cd zhparser-master
SCWS_HOME=/usr/local make && make install
cd ..
检查安装情况
\dx
List of installed extensions +----------+---------+------------+------------------------------------------+ | Name | Version | Schema | Description | +----------+---------+------------+------------------------------------------+ | plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language | | zhparser | 2.2 | public | a parser for full-text search of Chinese | +----------+---------+------------+------------------------------------------+
\dFp
List of text search parsers +------------+----------+---------------------+ | Schema | Name | Description | +------------+----------+---------------------+ | pg_catalog | default | default word parser | | public | zhparser | | +------------+----------+---------------------+
卸载删除不用文件
rm -rf zhparser-master
rm -rf scws-1.2.3
apt-get purge -y --auto-remove ca-certificates wget postgresql-server-dev-$PG_MAJOR make gcc
对数据库进行索引配置
-- 进入docker容器内数据库,或者使用navicat等连接
psql -U <用户名>
CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese ADD MAPPING FOR n,v,a,i,e,l WITH simple;
给数据库表添加全文索引
CREATE INDEX idx_fulltext_keywords ON table USING GIN (
to_tsvector('chinese', name || ' ' || phone || ' ' || address || ' ' || email)
);
进行查询测试
select *
FROM table
WHERE to_tsvector('chinese', name || ' ' || phone || ' ' || address || ' ' || email)
);
@@ to_tsquery('chinese', '张 & 34 & 广州 & g');
explain sql语句