javascript - 从 Node.js 向 Apache solr 发出带有变音符号的 Http GET 请求

标签 javascript node.js encoding solr http-get

我尝试在 URL 参数中使用变音符号发出请求以获取推荐:

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 问题。

感谢您的帮助。

最佳答案

在每种情况下,我建议使用 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/

相关文章:

php - AJAX编码问题

python - 预处理、重采样和管道 - 以及两者之间的错误

javascript - 从 Canvas 获取像素颜色

javascript - 如何通过浏览器宽度提供不同的 javascript 文件

php - Node + now.js + 模型- View -控制-模式

http - 如何在 node.js http 客户端中设置套接字连接超时

perl - 如何为 GET 请求绕过 LWP 的 URL 编码?

java - 如何将 javascript 文件捆绑到 Java 应用程序中?

javascript - lodash _.includes 的 Vanilla Javascript 等价物

c - 如何将语言绑定(bind)到 C 库