我正在尝试使用网址参数中的变音符号提出请求,以获取建议:

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 + ")";

关于javascript - 来自node.js的变音符向Apache solr发出Http GET请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43224529/

10-10 18:45
查看更多