PostgreSql全文索引

新需求,这次要做个日志的全文索引,前情提要:老板要求把所有日志都保存到数据库,方便查询,并且要全文搜索。那用like的方法当然会很慢啦,所以要做个全文索引

准备

  1. 保证所用pg版本在9.2以上
  2. SCWS
  3. zhparser

安装插件

# 安装scws
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
tar -xvf scws-1.2.3.tar.bz2
cd scws-1.2.3
./configure
sudo make install
# 安装zhparser
git clone https://github.com/amutu/zhparser.git
cd zhparser
make
sudo make install

使用

  1. 在pg中开启插件
    CREATE EXTENSION zhparser;
  2. 新建索引配置
    CREATE TEXT SEARCH CONFIGURATION logcfg (PARSER = zhparser);
    ALTER TEXT SEARCH CONFIGURATION logcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;
    create index idx_name on t_log using gin(msg_tsvector);
  3. 将需要搜索的内容转化为tsvector类型
    SELECT to_tsvector('logcfg','“今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历>史纪录。”陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。');
  4. 查询
    SELECT * FROM t_log WHERE msg_tsvector @@ to_tsquery('logcfg','住房');

宝塔面板中

如果使用宝塔面板自带的pg数据库,安装zhparser插件可能会有些问题,
首先,编译zhparser时,需要加上PG_CONFIG的配置,如下所示

PG_CONFIG=/www/server/pgsql/bin/pg_config make && make install

即使如此,可能还会出现头文件找不到的错误,因为头文件在目录/www/server/pgsql/include/server,而编译时找的目录却是/www/server/pgsql/include/14/server,所以,只要将目录/www/server/pgsql/include/server完整复制到/www/server/pgsql/include/14/server即可。
最后,将扩展所需的文件复制到宝塔的pg目录中

cp -r /usr/lib/postgresql/14/lib/* /www/server/pgsql/lib/
cp -r /usr/share/postgresql/14/extension/* /www/server/pgsql/share/extension/
cp -r /usr/share/postgresql/14/tsearch_data /www/server/pgsql/share/
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇