mysqlftppc-bigram 安裝

這一篇是為了報答某論壇站長說若去澳門玩費用全免而寫的 .. 也要看我有沒有錢搭飛機去澳門 ... 唉

mysqlftppc-bigram 是 MySQL 的 FullText Plugin , 是用 n-gram 演算法去斷詞因此得以支援中文全文索引 , 目前僅支援 myisam 表格 , 且中文索引的欄位必須為 utf-8 , 廢話不說以下就是安裝過程

平台 : CentOS 5.3 64bit

需要的相關件

  • MySQL 版本必須是 5.1 或以上
  • 最新的 mysqlftppc-bigram , http://sourceforge.net/projects/mysqlftppc/
  • mysql-devel 套件 , 可先用 yum  先安裝好
  • libicu-devel 套件 , 要有這個才可以支援 UNICODE , 可先用 yum 先安裝好

 

下載 mysqlftppc-bigram 解開後 , 按照下列步驟編譯

./configure --with-mysql-config=/usr/bin/mysql_config --with-icu-config=/usr/bin/icu-config
make
make install

若 mysql 或 icu 是自己用其他方式安裝到不同目錄則要注意一下 ./configure 那段 , 必須要確保 mysql_config 及 icu-config 的正確路徑

好了 , 若一切正常 , 其實在 make install 之後會安裝一個  libftbigram.so 到  /usr/lib64/mysql/plugin/ , 接下來可以在 phpmyadmin 或 mysql console 下一道 SQL 命令如下

INSTALL PLUGIN bigram SONAME 'libftbigram.so'

如果上述的 SQL 指令執行錯誤發生一個訊息是 Table 'mysql.plugin' doesn't exist , 那應該是因為 CentOS 預設是 MySQL 5.0 , 後來升級時就沒有 mysql.plugin 這個表格 , 那麼就必須執行 mysql_upgrade 這道指令就會有了

安裝好bigram之後要檢查一下到底有沒有被 mysql 載入 , 可以下 SHOW STATUS LIKE "Bigram_info" 這道指令 , 像我的機器就會有以下結果

Variable_name Value
Bigram_info with ICU 3.6(Unicode 5.0)

這樣大致上就安裝完畢了 , 至於要怎麼讓表格使用到 bigram FullText 呢 ? 假設有個表格叫 test 好了 , 有個欄位名稱叫 test_text , 這個 test_text 必須為 varchar 或 text 型態 , 我們用以下方式就可以為 test.test_text 建立 bigram FullText 索引

ALTER TABLE test ADD FULLTEXT(test_text) WITH PARSER bigram

下這道指令所耗用的時間會視資料表的大小有很大的差異 , 以我的經驗 , 若有 200MB 的資料 , 建立索引會超過 10 分鐘 , 所以若在已經上線的機器上做 , 必須先讓網站停下來做 , 避免大家都要讀取表格而發生 Table Wait Lock ... 那這樣就非常嚴重了 , 建立索引完成後 , 以後就不用管他了 , 至於要如何來抓資料 , 就請參照 Mysql 文件吧 , 這不是本篇要講的 , 基本上就去查 MATCH AGAINST 的指令 , 看看範例就可以實做了 , 完B

3 則評論在 mysqlftppc-bigram 安裝.

  1. 你好

    我是centos 5.3 + mysql + php

    對mysql 不支援繁體 全文索引.找過無數網站,搞的一個頭兩個大

    只有你介紹這套讓我很心動…

    我資料庫大概有300萬筆資料…

    希望你站長能留 msn 或是即時通給我

    交流一下`

發佈留言