2017-04-05 87 views
0

我試圖在URL參數與變音符號請求來獲取建議:HTTP GET請求Apache Solr實現與變音符號從node.js的

function getRecommendations(auth, callback) { 

    var params = '+"olivenöl"'; 
    var host = 'something.com'; 
    var path = "/solr/cloud/select?q=*&fq=ingredient_t:(" + params + ")"; 

    var options = { 
     "host": host, 
     "path": path, 
     "method": 'GET', 
     "headers": { 
      "Authorization": auth, 
      "Content-Type": "application/json", 
      "Accept": "application/json", 
     } 
    }; 

    http.request(options, function (res) { 
     res.setEncoding('utf8'); 
     var body = ''; 

     res.on('data', function (d) { 
      body += d; 
     }); 

     res.on('end', function() { 
      callback(body); 
     }); 

    }); 
} 

響應在德國,如果一個變音符號案件的建議空單存在於URL參數中。

我嘗試編碼爲ö=> oe或ü=> ue ...但系統跳過參數爲不存在。

有人知道如何編碼UMLAUTS嗎?我也困惑這是HTTP GET問題還是Solr問題。

感謝您的任何幫助。

+0

我認爲使用'encodeURIComponent(path)'是個好主意。請參閱此鏈接瞭解更多信息https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp – codtex

回答

1

在每種情況下,我建議使用encodeURIComponent()函數對查詢字符串中傳遞的參數進行編碼。

但我也建議測試您的Solr實例已正確配置爲使用UMLAUTS特殊字符處理查詢。

您可以直接使用您的瀏覽器來執行此操作,例如使用UMLAUTS特殊字符執行查詢。

因此,我們可以排除這是一個與您的Solr配置有關的問題,但它在您的node.js請求實現中。

只是另一回事,只需再次檢查Solr是否返回json。如果您想確保在查詢中添加wt=json參數。

var ingredient = encodeURIComponent(params); 
var path = "/solr/cloud/select?q=*&wt=json&fq=ingredient_t:(" + ingredient + ")"; 
+0

非常感謝,對我有用。 –