? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sphinx
(1)Sphinx簡(jiǎn)介
Sphinx是一個(gè)基于SQL的全文檢索引擎读处,可以結(jié)合MySQL,PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫(kù)本身更專(zhuān)業(yè)的搜索功能逆瑞,使得應(yīng)用程序更容易實(shí)現(xiàn)專(zhuān)業(yè)化的全文檢索痹栖。Sphinx特別為一些腳本語(yǔ)言設(shè)計(jì)搜索API接口才睹,如PHP,Python,Perl,Ruby等咆繁,同時(shí)為MySQL也設(shè)計(jì)了一個(gè)存儲(chǔ)引擎插件。
Sphinx單一索引最大可包含1億條記錄艾船,在1千萬(wàn)條記錄情況下的查詢(xú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)條記錄的增量索引践宴,重建一次只需幾十秒鲸匿。
(2)Sphinx工作流程圖:
(3)流程圖解釋?zhuān)?br>
Database:數(shù)據(jù)源,是Sphinx做索引的數(shù)據(jù)來(lái)源阻肩。因?yàn)镾phinx是無(wú)關(guān)存儲(chǔ)引擎带欢、數(shù)據(jù)庫(kù)的,所以數(shù)據(jù)源可以是MySQL烤惊、PostgreSQL乔煞、XML等數(shù)據(jù)。
Indexer:索引程序柒室,從數(shù)據(jù)源中獲取數(shù)據(jù)渡贾,并將數(shù)據(jù)生成全文索引⌒塾遥可以根據(jù)需求空骚,定期運(yùn)行Indexer達(dá)到定時(shí)更新索引的需求。
Searchd:Searchd直接與客戶(hù)端程序進(jìn)行對(duì)話(huà)不脯,并使用Indexer程序構(gòu)建好的索引來(lái)快速地處理搜索查詢(xún)府怯。
APP:客戶(hù)端程序。接收來(lái)自用戶(hù)輸入的搜索字符串防楷,發(fā)送查詢(xún)給Searchd程序并顯示返回結(jié)果。
(4)Sphinx原理:
Sphinx的整個(gè)工作流程就是Indexer程序到數(shù)據(jù)庫(kù)里面提取數(shù)據(jù)则涯,對(duì)數(shù)據(jù)進(jìn)行分詞复局,然后根據(jù)生成的分詞生成單個(gè)或多個(gè)索引,并將它們傳遞給searchd程序粟判。然后客戶(hù)端可以通過(guò)API調(diào)用進(jìn)行搜索亿昏。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CoreSeek
(1)CoreSeek簡(jiǎn)介
Coreseek 的開(kāi)發(fā)工作類(lèi)似Sphinx(起始于2001年),可以上溯到2006年档礁,當(dāng)時(shí)試圖為一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站尋找一個(gè)可接受的中文搜索的解決方案角钩,但是當(dāng)時(shí)沒(méi)有任何方案能夠完全而又直接的滿(mǎn)足要求。事實(shí)上呻澜,主要是如下問(wèn)題:
---搜索質(zhì)量(例如:類(lèi)似Google的有效的相關(guān)度算法) 單純的統(tǒng)計(jì)學(xué)方法的效果非常糟糕递礼,特別是在大量的短篇文檔的集合上,例如:論壇羹幸、博客等等
---搜索速度 特別是當(dāng)搜索的短語(yǔ)包括"停止詞"時(shí)脊髓,表現(xiàn)的尤其明顯,例如:"to be or not to be"
---建立索引時(shí)栅受,可控的磁盤(pán)和CPU消耗 在現(xiàn)有硬件的環(huán)境下将硝,這一點(diǎn)的重要性要超過(guò)對(duì)索引構(gòu)造速度的要求恭朗。
---中文搜索的準(zhǔn)確性和效率 因?yàn)楸娝苤脑颍挥袦?zhǔn)確的中文分詞才能提高中文搜索的準(zhǔn)確性依疼,并大大降低計(jì)算量痰腮。
(2)CoreSeek原理
Coreseek為應(yīng)用提供全文檢索功能,目前的版本(2.x 3.x)基于Sphinx律罢,支持使用Python定義數(shù)據(jù)源膀值,支持中文分詞。coreseek集合了sphinx的功能弟翘,支持更多的數(shù)據(jù)源虫腋,在字典,建立索引稀余,分詞更好的支持中文悦冀。可以這樣理解睛琳,coreseek就是支持中文的sphinx全文檢索