Xapian 的幾個細節
這篇是延續 幫 Pixnet 做 Fulltext Search 這篇所寫的,這項功能 Pixnet 已經放出來了:[公告] 新增網誌搜尋(Beta)。 最後收尾的階段有一些地雷要注意: Xapian 對大的 Database 更新會很慢。一開始我是對單一 Database 更新,結果更新的速度跟不上條目修改的速度 XD 所以,我跟 far 稍微提過以後,決定用空間換取時間,以 ArticleID 拆開,一萬為一個單位把 Xapian Database 切成 n 個 DB 放在 NetApp 上,更新時是對這些小資料庫更新,最後再跑 xapian-compact 合併。這樣就跟的上速度了:三十萬篇大約需要兩個小時的更新 + 六個小時的合併。 有一天心情不好 (原因就不提了),決定把 xapian-compact 的 -m 拿掉 (multipass,官方建議當你有許多 DB 要合併時,使用這個參數「通常」會比較快),結果莫名其妙把合併的時間省到 40mins... (當場就把「靠腰」罵出來了) 最後,把本來是用 standalone 的版本換成 lighttpd + FastCGI 版,理論上就不會出現因為後端搜尋伺服器沒跑起來,而使得前端出現 0 … Continue reading "Xapian 的幾個細節"