Solr – Enterprise search 的「黑盒子」

最近因為需要做 search,於是找了 Lucene 來看,順便寫了些簡單的 index、search 的 code 摸摸看感覺。用 Lucene 的理由很多,速度快、scalability 好都是原因之一,很多大站 (digg、livejournal、CNet、Joost) 都採用也是原因,但是最重要的理由則是我對商業環境使用 Open Source 軟體的哲學…

「要用 Open Source 的玩意兒,就要用 community 最大、最 active 的」。因為這樣,白老鼠才夠多,support 才夠廣,支援度也夠好。有地雷的話,會有人先替你踩過,有問題會有人先修好 XD

廢話說完了,該來說 Solr (發音同 Solar)。話說今天下午,寫一些簡單的 code 測試 Lucene,結果在翻 documents 的時候意外翻到 Solr。看了幾下子以後開始幹聲連連… (我怎麼不早點看到這玩意兒啊?) 看來 Solr 根本把所有站內搜尋應該做的事情做完了嘛。

簡單說,Solr 是完全把 Lucene 整個包起來,藏成一個搜尋的黑盒子。你不要管 Lucene 裡面怎麼做 Tokenizer、Analyzer (雖然如果想改也可以),而只需要透過 XML/HTTP 來跟 Solr 溝通即可。要新增文件去搜尋,就用 HTTP POST 塞資料給它。要做搜尋的時候,再另外做 HTTP GET 就好。非常符合 KISS 原則 (Keep It Simple, Stupid)。

雖然還沒進行壓力測試,不過 Solr 的底層是 Lucene,又是 CNet 的人寫出來的,看起來應該是還不錯用才對。

還是那句話,我怎麼摸 Lucene 好幾天以後才看到這種好東西呢…