首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Sphinx + MySQL 千萬級全文檢索架構設計與安裝部署指南

     編輯:MySQL 資料庫相關知識

架構設計亮點

  • 硬體:DELL PowerEdge 6850(4×Xeon MP 7110N / 8GB RAM)
  • 軟體:RedHat AS4 + MySQL 5.1.26 + MyISAM + key_buffer=1024M
  • 單表 1000 萬記錄,主鍵查詢 0.01 秒
  • Sphinx:單索引 1 億記錄,1000 萬查詢 0.x 秒,建索引 100 萬/3-4 分鐘

搜尋引擎架構圖

Sphinx+MySQL架構圖

五大設計策略

1. 呼叫極簡化

前端僅需一條 SQL:

SELECT ... FROM myisam_table 
JOIN sphinx_table ON (sphinx_table.sphinx_id = myisam_table.id) 
WHERE query = '...';

2. 索引建立與查詢極速

  • Sphinx:俄羅斯 Andrew Aksyonoff 開發,GPL/商業雙授權
  • 特性:10MB/s 建索引、0.1秒搜尋、100GB/1億記錄擴展性、分散式檢索、多模式排序、任意欄位、MySQL 存儲引擎整合
  • 主鍵 JOIN 查詢:MyISAM 單表主鍵查詢 10,000+ QPS,普通查詢僅幾百 QPS

3. 服務類型分離

  • 3306 端口:提供搜尋查詢服務
  • 3406 端口:提供索引源資料服務(Sphinx 讀取時鎖表,避免阻塞寫入)

4. 主索引 + 增量索引更新策略

  • 主索引:前天 17:00 前資料,每天凌晨重建
  • 增量索引:前天 17:00 後至最新,每 3 分鐘重建

5. Ext3 + tmpfs 雙檔案系統

  • 主索引放磁碟
  • 增量索引放 /dev/shm/(記憶體檔案系統),讀寫極速
  • 開機腳本自動重建增量索引目錄結構

中文分詞詞庫

整合:百度早期詞庫 + 搜狗拼音細胞詞庫 + LibMMSeg 高頻字庫。可用 LibMMSeg 內建詞庫起步。

安裝部署步驟(節選)

1. 安裝 Python 支援

yum install -y python python-devel

2. 編譯安裝 LibMMSeg

unzip sphinx-0.9.8-rc2-chinese.zip
tar zxvf mmseg-0.7.3.tar.gz
cd mmseg-0.7.3 && ./configure && make && make install

3. 編譯安裝 MySQL 5.1.26 + Sphinx + SphinxSE

wget https://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/...
tar zxvf mysql-5.1.26-rc.tar.gz
tar zxvf sphinx-0.9.8-rc2.tar.gz
cd sphinx-0.9.8-rc2
patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch
patch -p1 < ../fix-crash-in-excerpts.patch
cp -rf mysqlse ../mysql-5.1.26-rc/storage/sphinx
cd ../mysql-5.1.26-rc
sh BUILD/autorun.sh
./configure --with-plugins=sphinx --prefix=/usr/local/mysql-search/ \
  --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client \
  --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile
make && make install

cd ../sphinx-0.9.8-rc2
CPPFLAGS=-I/usr/include/python2.4 LDFLAGS=-lpython2.4
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql-search
make && make install

完整目錄(共 24 頁)

目錄1 目錄2 目錄3

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved