經(jīng)過(guò)幾天的折騰,終于讓weblucene按照我們的要求象一匹撒韁的野馬在寬廣平坦的服務(wù)器上巔巔的跑了起來(lái),為此,回家多吃了一角大餅卷肉,yeah。
下面把主要過(guò)程貼在這里,供需要的人瞻仰。
首先寫(xiě)一從數據庫里dump數據的程序,目的是把原始數據dump成三層結構的XML文件,文件結構在上篇有關(guān)的文章里寫(xiě)過(guò),需要注意的是,生成XML文件的過(guò)程中要把一些特殊字符過(guò)濾掉,以免IndexRunner那小子不認識,可以使用chedong那家伙寫(xiě)的倆函數escapeForXML和escapeForURL,別忘了還有轉換成GB2312編碼??傊?,在dump出來(lái)的xml文件中不能有任何比較特殊的字符,否則在建立索引的時(shí)候就會(huì )拋出異常并停止建立索引,我覺(jué)得這里的處理辦法應該改成遇到錯誤記錄就跳過(guò),而不是退出,這樣遇到有特殊字符的記錄就跳可以過(guò)去繼續建立索引,當然代價(jià)是扔掉幾條記錄。畢竟相對于大量的數據來(lái)說(shuō),還有特殊字符的畢竟是極少數。然后就是定時(shí)的做增量索引。我們的辦法是將每次查詢(xún)記錄的最后日期寫(xiě)入文件,下次讀取這個(gè)時(shí)間,從這個(gè)時(shí)間開(kāi)始查詢(xún)。把執行dump程序的命令寫(xiě)在.sh執行文件中,dump后使用-a選項建立增量索引(就是在原來(lái)索引中添加新的索引)。注意,在沒(méi)有index目錄之前(就是還沒(méi)有建立索引之前)不能使用-a選項,第二次執行.sh命令的時(shí)候再加上-a選項。否則會(huì )報錯。然后將.sh執行文件寫(xiě)入crontab中定期執行。
接下來(lái)制定搜索返回類(lèi)型為xml,在需要搜索服務(wù)的地方接收xml結果進(jìn)行解析再進(jìn)行需要的操作即可。
同事bluetent的這篇blog介紹了相關(guān)內容

