# Xapian 對大的 Database 更新會很慢。一開始我是對單一 Database 更新,結果更新的速度跟不上條目修改的速度 XD
# 所以,我跟 far 稍微提過以後,決定用空間換取時間,以 ArticleID 拆開,一萬為一個單位把 Xapian Database 切成 n 個 DB 放在 NetApp 上,更新時是對這些小資料庫更新,最後再跑 xapian-compact 合併。這樣就跟的上速度了:三十萬篇大約需要兩個小時的更新 + 六個小時的合併。
# 所以,我跟 far 稍微提過以後,決定用空間換取時間,以 ArticleID 拆開,一萬為一個單位把 Xapian Database 切成 n 個 DB 放在 NetApp 上,更新時是對這些小資料庫更新,最後再跑 xapian-compact 合併。這樣就跟的上速度了:三十萬篇大約需要兩個小時的更新 + 六個小時的合併。
# 有一天心情不好 (原因就不提了),決定把 xapian-compact 的 -m 拿掉 (multipass,官方建議當你有許多 DB 要合併時,使用這個參數「通常」會比較快),結果莫名其妙把合併的時間省到 40mins…
最後,把本來是用 standalone 的版本換成 lighttpd + FastCGI 版,理論上就不會出現因為後端搜尋伺服器沒跑起來,而使得前端出現 0 result 的情況了… (汗)
http://blog.gslin.org/archives/2007/08/10/1264/xapian-%E7%9A%84%E5%B9%BE%E5%80%8B%E7%B4%B0%E7%AF%80/