2017-04-05 84 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

非常感谢,对我有用。 –