簡體   English   中英

來自node.js的變音符向Apache solr發出Http GET請求

[英]Http GET request to Apache solr with umlauts from 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);
        });

    });
}

如果網址參數中包含德語變音符號,則響應的建議列表為空。

我嘗試將其編碼為ö=> oe或ü=> ue ...,但是沒有系統跳過參數。

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

謝謝你的幫助。

在每種情況下,我建議使用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 + ")";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM