下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 技術開發 > 數據庫 > 教你PostgreSQL如何進行中文全文檢索

          教你PostgreSQL如何進行中文全文檢索

          時間:2024-02-05 12:47作者:下載吧人氣:25

          開始

          安裝

          首先是安裝 PgSQL,這里我使用的是 PgSQL 9.6,PgSQL 10 也剛發布了,有興趣的可以嘗下鮮。

          PgSQL 的安裝可以說非常復雜了,除了要安裝 Server 和 Client 外,還需要安裝 devel 包。為了實現空間索引功能,我們還要安裝最重要的 PostGIS 插件,此插件需要很多依賴,自己手動安裝非常復雜而且很可能出錯。

          推薦自動化方式安裝,Yum 一定要配合 epel 這樣的 Yum 源,保障能將依賴一網打盡。當然最好的還是使用 docker 來運行,找個鏡像就行了。

          插件

          由于 PgSQL 的很多功能都由插件實現,所以還要安裝一些常用的插件,如:

          postgis_topology(管理面、邊、點等拓撲對象)

          pgrouting(路徑規劃)

          postgis_sfcgal(實現3D相關算法)

          fuzzystrmatch(字符串相似度計算)

          address_standardizer/address_standardizer_data_us(地址標準化)

          pg_trgm(分詞索引)

          這些插件在安裝目錄 /path/extensions 下編譯完畢后,在數據庫中使用前要先使用 create extension xxx 啟用。

          啟動

          1.切換到非 root 用戶。(PgSQL 在安裝完畢后會創建一個名為 postgres 的超級用戶,我們可以使用這個超級用戶來操作 PgSQL,后期建議重新創建一個普通用戶用來管理數據);

          2.切換到 /installPath/bin/ 目錄下,PgSQL 在此目錄下提供了很多命令,如 createdb、createuser、dropdb、pg_dump 等;

          3.使用 createdb 命令初始化一個文件夾 dir_db (此目錄不能已存在)存放數據庫物理數據,使用 -E UTF8 參數指定數據庫字符集為 utf-8;

          4.使用 pg_ctl -D dir_db 指定數據庫啟動后臺服務;

          5.使用 psql -d db 在命令行登陸 PgSQL;

          配置

          安裝完畢后還要配置一些比較基本的參數才能正常使用。

          Host權限

          PgSQL需要在 pg_hba.conf 文件中配置數據庫 Host 權限,才能被其他機器訪問。

          # TYPE  DATABASE        USER            ADDRESS                 METHOD

          local   all             all                                     trust

          host    all             all             127.0.0.1/32            md5

          host    all             all             172.16.0.1/16            md5

          文件中注釋部分對這幾個字段介紹得比較詳細, 我們很可能需要添加 host(IP) 訪問項, ADDRESS 是普通的網段表示法,METHOD 推薦使用 md5,表示使用 md5 加密傳輸密碼。

          服務器配置

          服務器配置在 postgresql.conf中,修改配置后需要 使用 pg_ctl restart -D dir_db 命令重啟數據庫;

          此外,我們也可以在登陸數據庫后修改配置項:使用 SELECT * FROM pg_settings WHERE name = ‘config’; 查詢當前配置項,再使用 UPDATE 語句更新配置。但有些配置如內存分配策略是只在當前 session 生效的,全局生效需要在配置文件中修改,再重啟服務器。

          我們可以修改配置并用客戶端驗證 SQL 語句的優化,使用 timing on 開啟查詢計時,使用 EXPLAIN ANALYSE 語句 分析查詢語句效率。 下面介紹兩個已實踐過的配置參數:

          • shared_buffers:用于指定共享內存緩沖區所占用的內存量。它應該足夠大來存儲常使用的查詢結果,以減少物理I/O。但它也不能太大,以避免系統 內存swap 的發生, 一般設置為系統內存的 20%。
          • work_mem:一個連接的工作內存,在查詢結果數據量較大時,此值如果較小的話,會導致大量系統 I/O,導致查詢速度急劇下降,如果你的 explain 語句內 buffer 部分 read數值過大,則表示工作內存不足,需要調整加此參數。但此值也不能太大,需要保證 work_mem * max_connections + shared_buffers + 系統內存 < RAM,不然同樣可能會導致系統 內存swap。

          這樣,PgSQL 就能作為一個正常的關系型數據使用了。

          分詞

          全文索引的實現要靠 PgSQL 的 gin 索引。分詞功能 PgSQL 內置了英文、西班牙文等,但中文分詞需要借助開源插件 zhparser;

          SCWS

          要使用 zhparser,我們首先要安裝 SCWS 分詞庫,SCWS 是 Simple Chinese Word Segmentation 的首字母縮寫(即:簡易中文分詞系統),其 GitHub 項目地址為 hightman-scws,我們下載之后可以直接安裝。

          安裝完后,就可以在命令行中使用 scws 命令進行測試分詞了, 其參數主要有:

          • -c utf8 指定字符集
          • -d dict 指定字典 可以是 xdb 或 txt 格式
          • -M 復合分詞的級別, 1~15,按位異或的 1|2|4|8 依次表示 短詞|二元|主要字|全部字,默認不復合分詞,這個參數可以幫助調整到最想要的分詞效果。

          zhpaser

          1.下載 zhparser 源碼 git clone https:github.com/amutu/zhparser.git;

          2.安裝前需要先配置環境變量:export PATH=$PATH:/path/to/pgsql;

          3.make && make install編譯 zhparser;

          4.登陸 PgSQL 使用 CREATE EXTENSION zhparser; 啟用插件;

          5.添加分詞配置

          CREATE TEXT SEARCH CONFIGURATION parser_name (PARSER = zhparser); // 添加配置
          ALTER TEXT SEARCH CONFIGURATION parser_name ADD MAPPING FOR n,v,a,i,e,l,j WITH simple; // 設置分詞規則 (n 名詞 v 動詞等,詳情閱讀下面的文檔)

          標簽MySQL,技術文檔,數據庫,PostgreSQL

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 无码aⅴ精品一区二区三区| 好湿好大硬得深一点动态图91精品福利一区二区 | 国产精品va无码一区二区| 久久精品国产一区二区三区 | 国产一区二区在线观看视频| 立川理惠在线播放一区| 国产人妖在线观看一区二区| AV天堂午夜精品一区| 丰满岳乱妇一区二区三区| 亚洲香蕉久久一区二区三区四区| 亲子乱AV视频一区二区| 一区二区三区福利| 亚洲一区在线免费观看| 国产伦理一区二区| 精品一区狼人国产在线| 精品视频一区二区| 日本不卡在线一区二区三区视频| 中文字幕一区二区精品区| 国产成人久久一区二区不卡三区| 午夜无码一区二区三区在线观看| 久久亚洲一区二区| 国产精品视频无圣光一区| 中文字幕一区二区区免| 一区二区亚洲精品精华液| 精品一区二区三区在线观看l | 中文字幕在线一区二区在线| 日韩一区二区视频| 一区二区三区精品视频| 3d动漫精品啪啪一区二区中文| 国产成人一区二区三区| 日本一区二区在线| 在线精品自拍亚洲第一区| 国产成人一区二区三区在线观看| 成人无码精品一区二区三区| 一区二区三区无码视频免费福利| 人妻夜夜爽天天爽一区| 91在线视频一区| 国产在线一区二区| 一区二区三区中文| 爱爱帝国亚洲一区二区三区| 亚洲av午夜福利精品一区|