2016-06-30 6 views
0

私は春のMVC 4.XとSolrの設定を使用してデータのインデックスとクエリを行っていますが、Jquery/JavaScriptの世界は初めてです。 私は、JSPページからSolr URLを直接照会するコードスニペットを見つけました。しかし、私はそれがビジネスロジックとビューを結合する良い考えではないと思います。検索クエリをインターセプトし、 SolrDocumentsのリストを返すコントローラを作成しました。返されたSolrドキュメントを表示するためのJquery Autocompleteプラグインの入手方法?

誰でも私が結果をUIに表示するように変更する必要があることを教えてください。私はJSONとして応答を返しています。あなたは、通常のRESTはデータではなく、Java APIを取得するためのSolrに呼び出しを使用

要求SearchController関連するスニペット

$(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 
     }) 
    }); 

UI

から

@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; 
    } 

答えて

0

良いです。まず第一に、あなたのJQueryとコントローラベースのアプローチは良いです。このような流れを維持する。あなたが今やっているようにJQueryを使ってあなたのコントローラに電話をかけてください。次に、コントローラでSolrからデータを取得するためのHTTP GET呼び出しを行い、Solr APIを使用しないでください。あなたがクエリを送信している間、ほかのすべてのパラメータはwt = jsonをパラメータとして渡します。このようにして、SolrからJSONを受け取り、エンコードされたString内のすべてのパラメータを取得します。データを受け取ったら、データをJSON StringとしてJQuery Ajaxに簡単に送ることができます。次に、あなたのニーズに応じてJQueryでこの応答を解析することができます。

+0

こんにちは、私はそれを働かせるようにしました。私はAjaxResponseというレスポンスを返していないと間違っていました。コントローラをRestControllerに変更し、Ajax Responseとして応答を返し、$ ajax:successメソッドでこの応答を解析しました。ご協力いただきありがとうございます。 – TruckDriver

+0

素晴らしい!それがあなたに何らかの形で役立ったら私の答えを受け入れるようになります:)。 –

関連する問題