(三)Solrj4到Solrj5的升级之路
(三)Solrj4到Solrj5的升級之路
Solr5發(fā)布了,帶來了許多激動人心的新特性,但Solrj的許多接口也發(fā)生了變化,升級是痛苦的,但也是必須的,下面就趕緊來看看有哪些代碼需要升級吧。
變化1:SolrServer變成了SolrClient
應該說這個變化是合理的,畢竟Solrj就是一個客戶端,命名為Server本身就有問題。這樣一來,所有SolrServer系列的類都需要更改為SolrClient系列的類,好在方法基本繼承過來了,只需要修改一下類名就可以了。
SolrServer -> SolrClient HttpSolrServer -> HttpSolrClient CloudSolrServer -> CloudSolrClient變化2:提交請求的方式變了
在Solrj4中,向服務器提交請求的方式比較簡單,首先擴展SolrRequest類,將需要組合的參數(shù)都以方法的形式暴露出來,并重寫process方法進行參數(shù)組合,如下所示。
class MySolrRequest extends SolrRequest {......@Overridepublic SolrResponse process(SolrServer server)throws SolrServerException, IOException {long startTime = System.currentTimeMillis();CoreAdminResponse res = new CoreAdminResponse();res.setResponse( server.request( this ) );res.setElapsedTime( System.currentTimeMillis()-startTime );return res;} }SolrRequest req = new MySolrRequest(); SolrResponse res = req.process(solrServer); if (res.getResponse().findRecursive("error", "failure") != null)return false; return true;?
在Solrj5中,SolrRequest被極大地增強了,定義了許多新的子類出來,用戶基本上不需要自定義新的Request類了,但學習成本相應的也變高了,有得必有失啊! 
 以在Cloud中創(chuàng)建Collection為例,新的Request為CollectionAdminRequest.Create類,用戶只需要創(chuàng)建這個類的實例就可以設(shè)置所有的相關(guān)參數(shù)。提交仍然是process方法,只不過這個方法已經(jīng)不需要我們重載了,直接調(diào)用就可以了,而且還擴展了返回的SolrResponse類,例如這里返回的就是CollectionAdminResponse類,代碼如下。
?
新版的process方法比老版的多拋出一個IOException異常,需要增加對該異常的處理。
變化三:對Zookeeper的支持增強了
在Solrj4中,對Zookeeper的支持還比較簡單,主要就是通過org.apache.solr.cloud.ZkController類來完成對Zookeeper中內(nèi)容的管理。 
 到了Solrj5,對ZkController類的方法進行了分隔,新增加了不少類,而且干脆就拋棄了對ZkController類的支持,因此給代碼升級帶來不少麻煩。 
 例如對于對在Zookeeper中配置文件的管理,老版代碼為
新版增加了ZkConfigManager類進行專門管理,相應的方法也由靜態(tài)方法變成了動態(tài)方法,尤其是參數(shù)從File類型變成了JDK7中新引入的Path類型。
ZkConfigManager confManager = new ZkConfigManager(zkClient); confManager.uploadConfigDir(Paths.get(confDir), confName); confManager.downloadConfigDir(confName, Paths.get(confDir));?
轉(zhuǎn)載于:https://www.cnblogs.com/gaogaoyanjiu/p/7813758.html
總結(jié)
以上是生活随笔為你收集整理的(三)Solrj4到Solrj5的升级之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Flask框架-蓝图系统
- 下一篇: eclipse无法添加Tomcat7
