我正在尝试使用网址参数中的变音符号提出请求,以获取建议:
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/