最近項目需要全文檢索,所以找了幾個開源的.NET檢索項目,如:Lucene.net,Sphinx,Hubble.net。最後選擇使用Lucene.ne來實現全文檢索。至於原因嘛,可以參考下面幾點:
1) Sphinx性能非常好,而且和Mysql結合的也非常好,但是,我們目前使用的是SqlServer,這個優勢我們也就用不著了,關鍵問題在於,Sphinx需要把整個索引吃到內存中,當索引比較大時,內存會不夠,關鍵是這個問題沒有找到合適的解決方案,最後只能捨棄。
2) Hubble.net的性能也很好,而且和SqlServer結合的非常好,所以,打算使用Hubble.net,使用時發現,Hubble.net只有在查全文時,才會使用Hubble.net自身檢索引擎。如果要查一些整形或時間或關鍵詞精確匹配時,就必須通過SqlServer的檢索來實現。聽說作者已經有意要把整形或時間等其它類型數據放入Hubble.net來進行檢索。目前只能期待。。。。
3) Lucene.net,這是目前使用的檢索項目。Lucene.net在性能方面可能不如上面兩種,但是性能至少能滿足我們目前的需求,而且有靈活的檢索方式,強大的社區支持,豐富的資料說明,這是我決定使用Lucene.net項目的原因。
如果我介紹的Sphinx和Hubble.net項目的缺陷已經解決或有解決方式,請高手們不吝賜教,謝謝。
測試服務器為HP服務器,Windows08系統,12核CPU,16G內存。
軟件架構使用.Net4.0+Sqlserver08+Lucene.net3.0+盤古分詞。
數據量約2300萬,索引30G。
測試方式:單個索引(30G)性能測試、多個索引(每個索引10G,共3個索引)性能測試、多個索引(每個索引10G,共3個索引)並行檢索性能測試。