欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Sphinx+MySQL全文檢索架構(gòu)與安裝

系統(tǒng) 1940 0

本文闡述的是一款經(jīng)過(guò)生產(chǎn)環(huán)境檢驗(yàn)的千萬(wàn)級(jí)數(shù)據(jù)全文檢索(搜索引擎)架構(gòu)。本文只列出前幾章的內(nèi)容節(jié)選,不提供全文內(nèi)容。

在DELL PowerEdge 6850服務(wù)器(四顆64 位Inter Xeon MP 7110N處理器 / 8GB內(nèi)存)、RedHat AS4 Linux操作系統(tǒng)、MySQL 5.1.26、MyISAM存儲(chǔ)引擎、key_buffer=1024M環(huán)境下實(shí)測(cè),單表1000萬(wàn)條記錄的數(shù)據(jù)量(這張MySQL表?yè)碛衖nt、datetime、varchar、text等類型的10多個(gè)字段,只有主鍵,無(wú)其它索引),用主鍵(PRIMARY KEY)作為WHERE條件進(jìn)行SQL查詢,速度非常之快,只耗費(fèi)0.01秒。

出自俄羅斯的開(kāi)源全文搜索引擎軟件 Sphinx ,單一索引最大可包含1億條記錄,在1千萬(wàn)條記錄情況下的查詢速度為0.x秒(毫秒級(jí))。Sphinx創(chuàng)建索引的速度為:創(chuàng)建100萬(wàn)條記錄的索引只需3~4分鐘,創(chuàng)建1000萬(wàn)條記錄的索引可以在50分鐘內(nèi)完成,而只包含最新10萬(wàn)條記錄的增量索引,重建一次只需幾十秒。

基于以上幾點(diǎn),我設(shè)計(jì)出了這套搜索引擎架構(gòu)。在生產(chǎn)環(huán)境運(yùn)行了一周,效果非常不錯(cuò)。有時(shí)間我會(huì)專為配合Sphinx搜索引擎,開(kāi)發(fā)一個(gè)邏輯簡(jiǎn)單、速度快、占用內(nèi)存低、非表鎖的MySQL存儲(chǔ)引擎插件,用來(lái)代替MyISAM引擎,以解決MyISAM存儲(chǔ)引擎在頻繁更新操作時(shí)的鎖表延遲問(wèn)題。另外,分布式搜索技術(shù)上已無(wú)任何問(wèn)題。

一、搜索引擎架構(gòu)設(shè)計(jì)

1、搜索引擎架構(gòu)圖

Sphinx+MySQL全文檢索架構(gòu)與安裝

2、搜索引擎架構(gòu)設(shè)計(jì)思路

(1)、調(diào)用方式最簡(jiǎn)化

盡量方便前端Web工程師,只需要一條簡(jiǎn)單的SQL語(yǔ)句“SELECT ... FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) WHERE query='...';”即可實(shí)現(xiàn)高效搜索。

(2)、創(chuàng)建索引、查詢速度快

①、Sphinx Search 是由俄羅斯人Andrew Aksyonoff 開(kāi)發(fā)的高性能全文搜索軟件包,在GPL與商業(yè)協(xié)議雙許可協(xié)議下發(fā)行。

Sphinx的特征

  • Sphinx支持高速建立索引(可達(dá)10MB/秒,而Lucene建立索引的速度是1.8MB/秒)
  • 高性能搜索(在2-4 GB的文本上搜索,平均0.1秒內(nèi)獲得結(jié)果)
  • 高擴(kuò)展性(實(shí)測(cè)最高可對(duì)100GB的文本建立索引,單一索引可包含1億條記錄)
  • 支持分布式檢索
  • 支持基于短語(yǔ)和基于統(tǒng)計(jì)的復(fù)合結(jié)果排序機(jī)制
  • 支持任意數(shù)量的文件字段(數(shù)值屬性或全文檢索屬性)
  • 支持不同的搜索模式(“完全匹配”,“短語(yǔ)匹配”和“任一匹配”)
  • 支持作為Mysql的存儲(chǔ)引擎

②、通過(guò)國(guó)外《High Performance MySQL》專家組的測(cè)試可以看出,根據(jù)主鍵進(jìn)行查詢的類似“SELECT ... FROM ... WHERE id = ...”的SQL語(yǔ)句(其中id為PRIMARY KEY),每秒鐘能夠處理10000次以上的查詢,而普通的SELECT查詢每秒只能處理幾十次到幾百次:

Sphinx+MySQL全文檢索架構(gòu)與安裝

③、Sphinx不負(fù)責(zé)文本字段的存儲(chǔ)。假設(shè)將數(shù)據(jù)庫(kù)的id、date、title、body字段,用sphinx建立搜索索引。根據(jù)關(guān)鍵字、時(shí)間、類別、范圍等信息查詢一下sphinx,sphinx只會(huì)將查詢結(jié)果的ID號(hào)等非文本信息告訴我們。要顯示title、body等信息,還需要根據(jù)此ID號(hào)去查詢MySQL數(shù)據(jù)庫(kù),或者從Memcachedb等其他的存儲(chǔ)中取得。安裝SphinxSE作為MySQL的存儲(chǔ)引擎,將MySQL與Sphinx結(jié)合起來(lái),是一種便捷的方法。

創(chuàng)建一張Sphinx類型表,將MyISAM表的主鍵ID和Sphinx表的ID作一個(gè)JOIN聯(lián)合查詢。這樣,對(duì)于MyISAM表來(lái)所,只相當(dāng)于一個(gè)WHERE id=...的主鍵查詢,WHERE后的條件都交給Sphinx去處理,可以充分發(fā)揮兩者的優(yōu)勢(shì),實(shí)現(xiàn)高速搜索查詢。

(3)、按服務(wù)類型進(jìn)行分離

為了保證數(shù)據(jù)的一致性,我在配置Sphinx讀取索引源的MySQL數(shù)據(jù)庫(kù)時(shí),進(jìn)行了鎖表。Sphinx讀取索引源的過(guò)程會(huì)耗費(fèi)一定時(shí)間,由于MyISAM存儲(chǔ)引擎的讀鎖和寫(xiě)鎖是互斥的,為了避免寫(xiě)操作被長(zhǎng)時(shí)間阻塞,導(dǎo)致數(shù)據(jù)庫(kù)同步落后跟不上,我將提供“搜索查詢服務(wù)”的和提供“索引源服務(wù)”的MySQL數(shù)據(jù)庫(kù)進(jìn)行了分開(kāi)。監(jiān)聽(tīng)3306端口的MySQL提供“搜索查詢服務(wù)”,監(jiān)聽(tīng)3406端口的MySQL提供“索引源服務(wù)”。

(4)、“主索引+增量索引”更新方式

一般網(wǎng)站的特征:信息發(fā)布較為頻繁;剛發(fā)布完的信息被編輯、修改的可能性大;兩天以前的老帖變動(dòng)性較小。

基于這個(gè)特征,我設(shè)計(jì)了Sphinx主索引和增量索引。對(duì)于前天17:00之前的記錄建立主索引,每天凌晨自動(dòng)重建一次主索引;對(duì)于前天17:00之后到當(dāng)前最新的記錄,間隔3分鐘自動(dòng)重建一次增量索引。

(5)、“Ext3文件系統(tǒng)+tmpfs內(nèi)存文件系統(tǒng)”相結(jié)合

為了避免每3分鐘重建增量索引導(dǎo)致磁盤IO較重,從而引起系統(tǒng)負(fù)載上升,我將主索引文件創(chuàng)建在磁盤,增量索引文件創(chuàng)建在tmpfs內(nèi)存文件系統(tǒng)“/dev/shm/”內(nèi)。“/dev/shm/”內(nèi)的文件全部駐留在內(nèi)存中,讀寫(xiě)速度非常快。但是,重啟服務(wù)器會(huì)導(dǎo)致“/dev/shm/”內(nèi)的文件丟失,針對(duì)這個(gè)問(wèn)題,我會(huì)在服務(wù)器開(kāi)機(jī)時(shí)自動(dòng)創(chuàng)建“/dev/shm/”內(nèi)目錄結(jié)構(gòu)和Sphinx增量索引。

(6)、中文分詞詞庫(kù)

我根據(jù)“百度早期中文分詞庫(kù)”+“搜狗拼音輸入法細(xì)胞詞庫(kù)”+“LibMMSeg高頻字庫(kù)”+... 綜合整理成一份中文分詞詞庫(kù),出于某些考慮暫不提供。你可以使用LibMMSeg自帶的中文分詞詞庫(kù)。

?

二、MySQL+Sphinx+SphinxSE安裝步驟

1、安裝python支持 (以下針對(duì)CentOS系統(tǒng),其他Linux系統(tǒng)請(qǐng)使用相應(yīng)的方法安裝)

yum install -y python python-devel

2、編譯安裝LibMMSeg (LibMMSeg是為Sphinx全文搜索引擎設(shè)計(jì)的中文分詞軟件包,其在GPL協(xié)議下發(fā)行的中文分詞法,采用Chih-Hao Tsai的MMSEG算法。LibMMSeg在本文中用來(lái)生成中文分詞詞庫(kù)。)

以下壓縮包“sphinx-0.9.8-rc2-chinese.zip”中包含mmseg-0.7.3.tar.gz、sphinx-0.9.8-rc2.tar.gz以及中文分詞補(bǔ)丁。

點(diǎn)擊這里下載文件

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
cd ../

3、編譯安裝MySQL 5.1.26-rc、Sphinx、SphinxSE存儲(chǔ)引擎

?

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/
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 ../

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 ../

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
cd ../

mv /usr/local/sphinx/etc/sphinx.conf /usr/local/sphinx/
etc/sphinx.conf.old

第二章第3節(jié)之后的正文內(nèi)容不予公布,全文的目錄如下(共24頁(yè)):

Sphinx+MySQL全文檢索架構(gòu)與安裝

Sphinx+MySQL全文檢索架構(gòu)與安裝

? Sphinx+MySQL全文檢索架構(gòu)與安裝

Sphinx+MySQL全文檢索架構(gòu)與安裝


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本一区二区三区四区在线观看 | 国产一区二区精品 | 国产精品二区三区 | 亚洲精品人成网线在线 | 二区欧美 | 欧美白人战黑吊 | 亚洲成人精品 | 亚洲日韩在线视频 | 免费看一区二区三区 | 天天碰天天摸天天操 | 日本一区欧美 | 日本久久黄色 | 男女性刺激爽爽免费视频 | 五月天激激婷婷大综合丁香 | 久久精品二区亚洲w码 | 一级特黄女人生活片 | 亚洲国产日韩欧美在线 | 国产精品18hdxxxⅹ在线 | 搞黄网站免费观看 | 久久香蕉国产线熟妇人妻 | 日韩不卡一区二区 | 99久久精品国产一区二区成人 | 欧美午夜不卡 | 欧美精品免费看 | 欧美久久亚洲精品 | 嫩草影院网影院在线 | 日日摸狠狠的摸夜夜摸 | 免费久久网站 | 欧美大片欧美大片 | 欧美一级久久久久久久久大 | 国产精品久久婷婷六月丁香 | 一级欧美视频 | 亚洲久久久久 | 精品综合 | 久久精品一区二区国产 | 一级a毛片免费观看久久精品 | 丝袜捆绑调教视频免费区 | 国产成+人+亚洲+欧美+日韩 | 久草黄视频 | 一区二区三区回区在观看免费视频 | 日韩成人精品在线 |