2017-04-05 6 views
0

Ich versuche Anfrage mit Umlaute in URL-Parameter, um Empfehlungen zu erhalten:Http GET-Anforderung an Apache Solr mit Umlauten von 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); 
     }); 

    }); 
} 

Antwort leere Liste von Empfehlungen in einem Fall, wenn die deutschen Umlaute hat in URL-Parametern enthalten.

Ich habe versucht zu kodieren als ö => oe oder ü => ue ... aber als System überspringe Parameter als nicht vorhanden.

Kann jemand UMLAUTS kodieren? Ich habe auch verwirrt dieses HTTP GET-Problem oder Solr-Problem.

Danke für jede Hilfe.

+0

Ich denke, es wird eine gute Idee sein, 'encodeURIComponent (Pfad)' zu verwenden. Bitte beachten Sie diesen Link für weitere Informationen https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp – codtex

Antwort

1

In jedem Fall empfehle ich, die Parameter in der Abfrage Zeichenfolge mit encodeURIComponent() Funktion übergeben codieren.

Aber ich empfehle auch zu testen, dass Ihre Solr-Instanz ordnungsgemäß konfiguriert ist, um Abfragen mit UMLAUTS-Sonderzeichen zu behandeln.

Sie können dies direkt mit Ihrem Browser tun, zum Beispiel eine Abfrage mit UMLAUTS-Sonderzeichen ausführen.

Damit können wir ausschließen, dass ein Problem mit Ihrer Solr-Konfiguration auftritt, aber in Ihrer node.js-Anforderungsimplementierung.

Nur noch eine Sache, nur überprüfen, ob Solr JSON zurückgibt. Und wenn Sie sicher sein wollen, fügen Sie den wt=json Parameter bei Ihrer Abfrage hinzu.

var ingredient = encodeURIComponent(params); 
var path = "/solr/cloud/select?q=*&wt=json&fq=ingredient_t:(" + ingredient + ")"; 
+0

Vielen Dank, funktioniert für mich. –