Xapian 的幾個細節

這篇是延續 幫 Pixnet 做 Fulltext Search 這篇所寫的,這項功能 已經放出來了:

最後收尾的階段有一些地雷要注意:

  • 對大的 Database 更新會很慢。一開始我是對單一 Database 更新,結果更新的速度跟不上條目修改的速度 XD
  • 所以,我跟 稍微提過以後,決定用空間換取時間,以 ArticleID 拆開,一萬為一個單位把 Database 切成 n 個 DB 放在 上,更新時是對這些小資料庫更新,最後再跑 xapian-compact 合併。這樣就跟的上速度了:三十萬篇大約需要兩個小時的更新 + 六個小時的合併。
  • 有一天心情不好 (原因就不提了),決定把 xapian-compact 的 -m 拿掉 (multipass,官方建議當你有許多 DB 要合併時,使用這個參數「通常」會比較快),結果莫名其妙把合併的時間省到 40mins... (當場就把「靠腰」罵出來了)

最後,把本來是用 standalone 的版本換成 + 版,理論上就不會出現因為後端搜尋伺服器沒跑起來,而使得前端出現 0 result 的情況了... (汗)

PS:因為當初做的時候有得到 的同意,所以等到我閒一點之後,我會用 BSD license 放出來...

2 thoughts on “Xapian 的幾個細節”

  1. 你好, 請問你的資料是怎樣的資料和什麼樣的機器, 300,000 的資料要用 8 個小時 (??) 謝謝

Leave a Reply

Your email address will not be published. Required fields are marked *