這篇是延續 幫 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 result 的情況了... (汗)
PS:因為當初做的時候有得到 far 的同意,所以等到我閒一點之後,我會用 BSD license 放出來...
你好, 請問你的資料是怎樣的資料和什麼樣的機器, 300,000 的資料要用 8 個小時 (??) 謝謝
你是 xern?我在 Xapian 的 mailing list 上有提過細節的部份,解法的部份暫時沒有想法,先這樣子做。