Sphinx/SQL 數據源
來自站長百科
- 連接到數據庫;
- 執(zhí)行預查詢,以便完成所有必須的初始設置,比如為MySQL連接設置編碼;
- 執(zhí)行主查詢,其返回的的數據將被索引;
- 執(zhí)行后查詢,以便完成所有必須的清理工作;
- 關閉到數據庫的連接;
- 對短語進行排序 (或者學究一點, 索引類型相關的后處理;
- 再次建立到數據庫的連接;
- 執(zhí)行后索引查詢,以便完成所有最終的清理善后工作;
- 再次關閉到數據庫的連接。
大多數參數是很直觀的,例如數據庫的用戶名、主機、密碼。不過,還有一些細節(jié)上的問題需要討論。
區(qū)段查詢
索引系統(tǒng)需要通過主查詢來獲取全部的文檔信息,一種簡單的實現是將整個表的數據讀入內存,但是這可能導致整個表被鎖定并使得其他操作被阻止(例如:在MyISAM格式上的INSERT操作),同時,將浪費大量內存用于存儲查詢結果,諸如此類的問題吧。為了避免出現這種情況,Sphinx支持一種被稱為區(qū)段查詢的技術. 首先,Sphinx從數據庫中取出文檔ID的最小值和最大值,將由最大值和最小值定義自然數區(qū)間分成若干份,一次獲取數據,建立索引。 后查詢(sql_post) vs. 索引后查詢(sql_post_index)
后查詢和索引后查詢的區(qū)別在于,當Sphinx獲取到全部文檔數據后,立即執(zhí)行后查詢,但是構建索引的過程仍然may因為某種原因失敗。在另一方面,當索引后查詢被執(zhí)行時,可以理所當然的認為索引已經成功構造完了。因為構造索引可能是個漫長的過程,因此對與數據庫的連接在執(zhí)行后索引操作后被關閉,在執(zhí)行索引后操作前被再次打開。