Sphinx與CoreSeek介紹

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?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直接與客戶端程序進(jìn)行對(duì)話,并使用Indexer程序構(gòu)建好的索引來(lái)快速地處理搜索查詢(xún)。

APP:客戶端程序。接收來(lái)自用戶輸入的搜索字符串,發(fā)送查詢(xún)給Searchd程序并顯示返回結(jié)果。

(4)Sphinx原理:

Sphinx的整個(gè)工作流程就是Indexer程序到數(shù)據(jù)庫(kù)里面提取數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行分詞,然后根據(jù)生成的分詞生成單個(gè)或多個(gè)索引,并將它們傳遞給searchd程序。然后客戶端可以通過(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)有任何方案能夠完全而又直接的滿足要求。事實(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全文檢索

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容