Http GET请求Apache solr与来自node.js的变音符号

时间:2017-04-05 07:25:11

标签: 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或ü=>呃...但是系统跳过参数不存在。

有人知道如何编码UMLAUTS吗?我也很困惑这个HTTP GET问题或Solr问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在每种情况下,我建议使用var ingredient = encodeURIComponent(params); var path = "/solr/cloud/select?q=*&wt=json&fq=ingredient_t:(" + ingredient + ")"; 函数对查询字符串中传递的参数进行编码。

但我还建议测试您的Solr实例是否已正确配置为使用UMLAUTS特殊字符处理查询。

您可以直接使用浏览器执行此操作,例如使用UMLAUTS特殊字符执行查询。

这样我们就可以排除这是与您的Solr配置相关的问题,但它在您的node.js请求实现中。

另外一件事,只需仔细检查Solr是否返回json。如果您想确保在查询中添加#include <gtk/gtk.h> void update_label(GtkLabel *glab); void update_label(GtkLabel *glab) { } int main(int argc, char *argv[]) { GtkWidget *lbl; gtk_init(&argc, &argv); lbl = gtk_label_new("Hi"); update_label(lbl); gtk_main(); return 0; } 参数。

graeme@graeme-HP-xw4300-Workstation ~/c/label $ gcc `pkg-config --cflags gtk+-3.0` my04.c -o my04 `pkg-config --libs gtk+-3.0`
my04.c: In function ‘main’:
my04.c:17:3: warning: passing argument 1 of ‘update_label’ from incompatible pointer type [enabled by default]
   update_label(lbl);
   ^
my04.c:5:6: note: expected ‘struct GtkLabel *’ but argument is of type ‘struct GtkWidget *’
 void update_label(GtkLabel *glab)
      ^