2016-02-25 43 views
1

我來這裏是因爲我正在搜索(如提到的標題)從geotools(通過geoserver)執行查詢以從solr索引獲取功能。通過地理服務器從Geotools進行solr查詢

爲了更精確:

我上,我可以在HTTP做查詢上Solr的這樣的GeoServer用戶手冊看到:

http://localhost:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature 
&typeName=mySolrLayer 
&format="xxx" 
&viewparams=q:"mySolrQuery" 

這個網址的重要組成部分,是我想要的viewparams直接從geotools中使用。

我已經測試此情況下(這是我的代碼的一部分):

url = new URL( 
"http://localhost:8080/geoserver/wfs?request=GetCapabilities&VERSION=1.1.0"; 
); 

    Map<String, String> param = new HashMap(); 
    params.put(WFSDataStoreFactory.URL.key, url); 
    param.put("viewparams","q:myquery"); 
    Hints hints = new Hints(); 
    hints.put(Hints.VIRTUAL_TABLE_PARAMETERS, viewParams); 
    query.setHints(hints); 


    ... 

    featureSource.getFeatures(query); 

但在這裏,它似乎不工作,該URL發送到GeoServer的是一個正常的「GET功能」請求不帶viewparams參數。

我試過用geotools-12.2; geotools-13.2和geotools-15-SNAPSHOT,但我沒有成功通過查詢,geoserver發送給我數據庫中的所有功能,並且不會將「viewparams」作爲參數。

我需要做的是這樣的,因爲實際上查詢從另一個程序來,我會很容易溝通此查詢到該項目的另一部分...

如果有人能幫助我嗎?

回答

0

由於GetFeature請求是由getCapabilities文檔提供的URL構造的,因此目前似乎沒有辦法在GeoTool的WFSDatastore implementations中執行此操作。這是standard所要求的,但可能值得提出功能增強請求,以允許客戶端重寫此字符串(例如QGIS所做的),這會讓您指定基本URL中的附加參數,然後將其傳遞給服務器如你所需。

不幸的是,世界糧食首腦會議模塊家住目前Unsupported江山如此多嬌,除非你有資源,在這個問題上自己工作和can provide a PR實現它沒有正在實施的是一個很好的機會。

+0

好的,謝謝你的信息,這是我所懷疑的。 對於我的問題,我選擇使用來自geotools的httpclient lib發送一個直接的URL請求,這不是最好的解決方案,因爲我們想維護我們的代碼。我想到了這一點,我想我會直接通過使用SolrJ客戶端對solr進行查詢,因爲geoserver在我們的實際顯示結果中不是強制性的。 – kavind