2016-06-30 2 views
0

Ich benutze Frühjahr MVC 4.X und Solr-Setup zum Indexieren und Abfragen meiner Daten, aber ich bin neu in Jquery/JavaScript Welt. Ich habe ein Code-Snippet gefunden, das direkt von der JSP-Seite die Solr-URL abfragt. Aber ich denke, es ist keine gute Idee , um mit Business-Logik zu verbinden, schrieb ich einen Controller, der die Suchanfrage abfängt und eine Liste von SolrDocuments zurückgibt.Wie bekomme ich das Jquery Autocomplete-Plugin zur Anzeige von Solr-Dokumenten?

Kann mir bitte jemand sagen, was geändert werden muss, damit es das Ergebnis in UI anzeigt, gebe ich die Antwort als JSON zurück oder zumindest hoffe ich es.

Antrag von UI

$(function() { 
     $("#searchBox").autocomplete({ 
      source : function(request, response) { 
       var searchField = $('#searchBox').val(); 
       var URL = "${home}/searchsolr?query=" + searchField; 
       $.ajax({ 
        url : URL, 
        success : function(data) { 
         var docs = JSON.stringify(data.response.docs); 

         var jsonData = JSON.parse(docs); 
         response($.map(jsonData, function(value, key) { 
          return { 
           label : value.name 
          } 
         })); 
        }, 
        dataType : 'jsonp', 
        jsonp : 'json.wrf' 
       }); 
      }, 
      minLength : 1 
     }) 
    }); 

Die SearchController relevante Schnipsel

@RequestMapping(value = "/searchsolr") 
    public @ResponseBody SolrDocumentList getSearchResultFromSolr(ModelMap model ,@RequestParam("query") String queryText) { 
     System.out.println("INSIDE SOLR SEARCH"); 
     ProdLookupService bls = new ProdLookupService(); 
     System.out.println("query text is "+queryText); 
     SolrDocumentList sdl =bls.findList(queryText); 
     System.out.println("goin to return"); 
     return sdl; 
    } 

Antwort

0

Besser Sie verwenden normale REST zu Solr ruft die Daten, anstatt die Java-API zu erhalten. Zunächst einmal ist Ihr auf JQuery und Controller basierender Ansatz gut. Also halte einen solchen Fluss aufrecht. Verwenden Sie JQuery, um Ihren Controller so aufzurufen, wie Sie es gerade tun. Führen Sie dann im Controller einen HTTP-GET-Aufruf aus, um Daten aus Solr zu holen, und verwenden Sie nicht die Solr-API. Während Sie die Abfrage und alle anderen Parameter senden, übergeben Sie auch wt = json als Parameter. Auf diese Weise erhalten Sie ein JSON von Solr. Geben Sie alle Ihre Parameter in einem codierten String ein. Nachdem Sie die Daten erhalten haben, können Sie die Daten einfach als JSON-String an Ihren JQuery Ajax senden. Dann können Sie diese Antwort in JQuery nach Ihren Bedürfnissen analysieren.

+0

Hallo, ich habe es geschafft zu arbeiten. Ich habe einen Fehler gemacht, dass ich die Antwort nicht als AjaxResponse zurückgab. Ich habe meinen Controller in RestController geändert und die Antwort als Ajax Response zurückgegeben. Anschließend habe ich diese Antwort in der $ ajax: success-Methode analysiert. Danke für Ihre Hilfe. – TruckDriver

+0

Großartig !! möchte, dass du meine Antwort akzeptierst, wenn es dir irgendwie weiterhilft :). –

Verwandte Themen