使用Solr構(gòu)建企業(yè)級的全文檢索(一)---------開篇
換了個工作單位,也就換了從事的項目的業(yè)務(wù)類型。新的項目中要需要使用全文檢索功能,由于項目是基于SQL server的應(yīng)用,所以舊的設(shè)計也就使用了SQL server的Full-text Search Engine來實現(xiàn)全文檢索功能。在使用SQL server 的全文檢索功能的過程中,發(fā)現(xiàn)有很多的問題不能很好的解決,比如Cache,一般來說,對于SQL server的緩存也就是執(zhí)行計劃的緩存和查詢結(jié)果的頁面緩存,遠(yuǎn)遠(yuǎn)不夠,而且也很難根據(jù)自己的業(yè)務(wù)需要去調(diào)整緩存的參數(shù)。另外對于多語言的分詞算法問題,SQL server雖然內(nèi)置了50多種語言的支持,但是都不夠完美,如果自己想要進(jìn)行替換,應(yīng)該是很困難的。還不支持Highlighting,還有現(xiàn)在應(yīng)用很廣泛的Faceting以及Field Collapsing。客戶推薦我們使用一下Solr來改進(jìn)全文檢索功能,所以我就花了些時間來研究了下Solr,并打算寫一些文章總結(jié)一下Solr的使用,也希望對各位同學(xué)有幫助吧。
唧唧歪歪說了一堆,現(xiàn)在就進(jìn)入正題吧 。
首先介紹一下Solr是什么。要說Solr,先說說Lucene。Lucene是Apache基金會一個全文檢索庫類庫的項目,這個項目的開源的,這個類庫是使用Java開發(fā)的,功能非常強(qiáng)大,如果大家感興趣可以去看看http://lucene.apache.org/.當(dāng)然這個類庫也有幾個其它語言的實現(xiàn),比如Python,也有.net的叫做lucene.net,不過因為社區(qū)活躍度不高,Apache基金會已經(jīng)不再贊助這個子項目了。 如果哪位同學(xué)希望把全文檢索的功能集成在自己的系統(tǒng)里面,或者擴(kuò)展luence的全文檢索功能,那應(yīng)該好好學(xué)學(xué)Lucene。如果你只想使用全文檢索,對底層的算法和邏輯既不想研究也不想干預(yù),那么Solr可能是一個更好的選擇。簡單的說,Solr就是使用Lucene庫實現(xiàn)的一個http服務(wù),當(dāng)然他也做了很多的擴(kuò)展。你可以將Solr部署在任何一個Java Serverlet容器里,比如Tomcat,Jetty。你可以通過RESTful的url就可以和Solr進(jìn)行通信,進(jìn)行文檔的indexing和檢索。這樣一來,易用性就得到大大的提升,因為不管你的項目是基于什么操作系統(tǒng)平臺的,使用什么語言開發(fā)的,只要你能和http服務(wù)器進(jìn)行通信,就能非常簡單快捷的在你的項目中實現(xiàn)全文檢索功能。如果要更加詳細(xì)的諒解Solr的相關(guān)信息,請訪問:http://lucene.apache.org/solr/
接下來我們需要下載和部署Solr。從 http://mirror.bjtu.edu.cn/apache//lucene/solr/這個頁面里選擇下載最新的版本,目前是3.5.0,剛剛出爐的。在安裝前有幾個準(zhǔn)備工作要做。Solr是用Java實現(xiàn)的,所以毫無疑問Java的虛擬機(jī)是要的,不管你是在Window上安裝,還是在Linux上安裝,點(diǎn)擊這里下載JDK,安裝完JDK別忘了檢查JAVA_HOME環(huán)境變量是否設(shè)置了。另外,如果你打算使用Tomcat的話,那就得先安裝Tomcat,點(diǎn)擊這里了下載。其實在實踐和練習(xí)的時候是用Jetty是比較方便的。如果你在windows上使用Solr,那么把剛才下載的Solr文件包加開,使用dos 命令行控制臺進(jìn)入example目錄,輸入java -jar start.jar,然后回車,如果沒有什么異常信息,Solr就啟動起來了。現(xiàn)在你打開瀏覽器,輸入http://localhost:8983/solr/admin/,就可以進(jìn)入Solr的管理控制臺了,如下圖

簡單的安裝已經(jīng)完成,可以進(jìn)行文檔索引和查詢了。
今天的開篇就到這里吧,算是準(zhǔn)備了一個環(huán)境。后續(xù)我會寫一系列文章來介紹Solr的使用。
在提供一些對大家準(zhǔn)備環(huán)境有幫助的信息:
Solr client for .Net --google code上的項目,項目的負(fù)責(zé)人很積極,如果你提交了Issue或者Defect,他會持續(xù)的關(guān)注和反饋。

浙公網(wǎng)安備 33010602011771號