Solr - Enterprise search 的「黑盒子」
>> 2007/07/25
最近因為需要做 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 好幾天以後才看到這種好東西呢...
7 comments:
謝謝您的分享
我最近參加一個網站開發,也要做站內搜索
可以分享一下後來您實作solr的心得嗎
心得很簡單,就是搜尋用 solr 就對了 :p
我幾乎可以武斷的說,用其他 open source search engine solution 的人,如果沒有很好的理由不用 solr,那大概就是因為對 solr 沒研究才會如此。
solr 使用上應該是很簡單的,大部分人不會碰到什麼特別的問題。不知道你有想知道什麼其他的東西嗎?
謝謝你的心得分享唷
我來試試看
有發生問題再來請教您唷!
Willy
請問有沒有遇到過 只查1個中文字的問題呢?
例如
查 "馬" 只出現 2筆
查 "馬英九" 出現 200筆
april, 這個問題應該是看妳 query 和 index 的中文斷詞是怎麼斷的... (使用什麼 tokenizer)
我是使用 solr.ChineseFilterFactory,沒有這個問題。
請教一下,Solr有辦法scale up嗎?好比說架在10台電腦上一起做indexing,或一起提供query service?其index的資料,有辦法存在多台電腦裡嗎?
學長太客氣了,也許學長想參考一下這個? http://wiki.apache.org/solr/CollectionDistribution
張貼留言