#網上雖然有這麼一張圖,但是解釋很少,我也覺得只看這張圖很難深刻理解Sphinx,下面我通俗的介紹一下;
#首先有一個MySQL主庫,這個主庫的存儲引擎是InnoDB;
#服務器運行兩個MySQL從庫進程,假定端口號分別是3306和3406;
#創建主庫和從庫的目的是爲了讓數據庫一直處於工作狀態;
#端口號爲3306的進程包括MyISAM和Sphinx兩個存儲引擎,用於直接對接php&SQL查詢;
#端口號爲3306的進程包括兩類數據表,一個是MyISAM表,另一個是Sphinx表;
#這兩個表通過對應的ID做JOIN聯合查詢;
#關於Sphinx表,包括三個進程,分別是indexer、searchd和search。indexer用來創建全文索引,searchd用來啓動全文檢索服務,負責接受查詢,處理查詢和返回數據集,search訪問全文檢索服務,也就是發起查詢,之後獲取檢索結果。假定Sphinx守護進程(也就是Searchd守護進程),端口號爲3312;
#Sphinx守護進程包括兩個索引,一個是主索引,一個是增量索引;
#增量索引的優點是準實時性,它的缺點是增加查詢時的I/O操作,從而犧牲了效率;
#增量索引定期和端口號爲3406的服務器進程通信,獲取最新的數據變化;
#索引查找依賴於索引的建立,索引技術裏面的全文索引依賴於詞庫(也或者說是詞典),詞庫的核心是分詞技術,分詞技術主要包括二元法和詞庫法;
#詞庫的更新目前主要使用“正向最大匹配”+“逆向最大匹配”,統計學方法和自動維護技術(百科);
#要理解這個模型的關鍵在於,主庫不負責接受查詢,但是卻接受php的更新操作,php一方面連接數據庫作更新操作,一方面與sphinx聯合作索引高效搜索,而sphinx索引的建立又依賴於數據庫;
http://sphinxsearch.com/ 斯芬克斯下載地址
簡單來說 sphinx就是一個搜索引擎 用來頂替 mysql 或者他數據庫的全文檢索,速度提升很多倍,除此之外還有elasticsearch