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 的幾個細節"

GPL 與 PHP License

這陣子在 Xapian 的 mailing list 上剛好提到 PHP binding 的問題,結果引伸出來的 license 問題。查了資料以後,在 Wikipedia 上有張表格:List of FSF approved software licenses。 簡單來說,PHP license 與 OpenSSL license 不相容的原因都一樣:因為廣告條款的關係。 Xapian 想要用其他方式解套 (像是有人提出用 SWIG 過水) 都會因為 GPL 有感染性而不太容易處裡:SWIG 軟體本身是 MIT-style 與 BSD-style license,但是他產生出來的 wrapper code 因為使用了 GPL library,所以包成 binary 時還是會受到 GPL 影響。 反正這類問題滿天飛...

幫 Pixnet 做 Fulltext Search

這幾天總算是比較接近完成的階段了,在問過 far 之後來寫一篇講一下。 大約是在年初的時候 far 就想要將 Pixnet Blog 的部份弄 Fulltext Search,剛好那陣子我也在弄類似的東西,survey 一些對 CJK 支援比較好的 Fulltext Search Engine,當時看起來比較好用是 平林幹雄 維護的 HyperEstraier。(我也寫了 HyperEstraier 與 HyperEstraier 與 qdbm 的一些雜記 兩篇文章) 不過後來 HyperEstraier 將近三個月沒更新,加上 Pixnet 那陣子在忙公司整合的事情,所以這件事情在收了訂金後就一直擱著... (皇上都不急了,太監就不要在旁邊跳腳...) 除了 HyperEstraier 外,我還有訂另外幾個 Fulltext Search Engine 的 mailing list,其中 Gmane 用的 Xapian 也蠻值得關注的。我從 0.9.x 版的時候就在觀察,當時連 UTF8 support 都沒有,但是 Gmane 有丟出 3rd party … Continue reading "幫 Pixnet 做 Fulltext Search"