Sphinx與CoreSeek介紹

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sphinx

(1)Sphinx簡介

Sphinx是一個基于SQL的全文檢索引擎,可以結(jié)合MySQL,PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能,使得應(yīng)用程序更容易實現(xiàn)專業(yè)化的全文檢索。Sphinx特別為一些腳本語言設(shè)計搜索API接口,如PHP,Python,Perl,Ruby等,同時為MySQL也設(shè)計了一個存儲引擎插件。

Sphinx單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度為0.x秒(毫秒級)。Sphinx創(chuàng)建索引的速度為:創(chuàng)建100萬條記錄的索引只需3~4分鐘,創(chuàng)建1000萬條記錄的索引可以在50分鐘內(nèi)完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。

(2)Sphinx工作流程圖:

(3)流程圖解釋:

Database:數(shù)據(jù)源,是Sphinx做索引的數(shù)據(jù)來源。因為Sphinx是無關(guān)存儲引擎、數(shù)據(jù)庫的,所以數(shù)據(jù)源可以是MySQL、PostgreSQL、XML等數(shù)據(jù)。

Indexer:索引程序,從數(shù)據(jù)源中獲取數(shù)據(jù),并將數(shù)據(jù)生成全文索引??梢愿鶕?jù)需求,定期運行Indexer達(dá)到定時更新索引的需求。

Searchd:Searchd直接與客戶端程序進(jìn)行對話,并使用Indexer程序構(gòu)建好的索引來快速地處理搜索查詢。

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

(4)Sphinx原理:

Sphinx的整個工作流程就是Indexer程序到數(shù)據(jù)庫里面提取數(shù)據(jù),對數(shù)據(jù)進(jìn)行分詞,然后根據(jù)生成的分詞生成單個或多個索引,并將它們傳遞給searchd程序。然后客戶端可以通過API調(diào)用進(jìn)行搜索。



? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CoreSeek

(1)CoreSeek簡介

Coreseek 的開發(fā)工作類似Sphinx(起始于2001年),可以上溯到2006年,當(dāng)時試圖為一個數(shù)據(jù)庫驅(qū)動的網(wǎng)站尋找一個可接受的中文搜索的解決方案,但是當(dāng)時沒有任何方案能夠完全而又直接的滿足要求。事實上,主要是如下問題:

---搜索質(zhì)量(例如:類似Google的有效的相關(guān)度算法) 單純的統(tǒng)計學(xué)方法的效果非常糟糕,特別是在大量的短篇文檔的集合上,例如:論壇、博客等等

---搜索速度 特別是當(dāng)搜索的短語包括"停止詞"時,表現(xiàn)的尤其明顯,例如:"to be or not to be"

---建立索引時,可控的磁盤和CPU消耗 在現(xiàn)有硬件的環(huán)境下,這一點的重要性要超過對索引構(gòu)造速度的要求。

---中文搜索的準(zhǔn)確性和效率 因為眾所周知的原因,只有準(zhǔn)確的中文分詞才能提高中文搜索的準(zhǔn)確性,并大大降低計算量。

(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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容