使用来自 node.js 的变音符号向 Apache solr 发出 Http GET 请求
Http GET request to Apache solr with umlauts from node.js
我正在尝试在 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 是否为 returns json。如果您想确定这一点,请在查询中添加 wt=json
参数。
var ingredient = encodeURIComponent(params);
var path = "/solr/cloud/select?q=*&wt=json&fq=ingredient_t:(" + ingredient + ")";
我正在尝试在 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 是否为 returns json。如果您想确定这一点,请在查询中添加 wt=json
参数。
var ingredient = encodeURIComponent(params);
var path = "/solr/cloud/select?q=*&wt=json&fq=ingredient_t:(" + ingredient + ")";