隨筆-153  評論-235  文章-19  trackbacks-0
              用ajax去請求solr服務。返回json,然后解釋。讓solr返回json的參數是wt=json。然后javascript用evel()解釋成對象。
          我的solr會返回:auother,title,introduce這幾個域。先創建一個jsp或html,如:json.jsp

          1.json.jsp關鍵的html內容
            <form action="select/" name="f1" method="get" onsubmit="xmlhttpPost('/solr/select'); return false;" >
                Chenlb: 
                
          <input type="text" name="q" size="80" value="文檔">
                
          <input name="start" type="hidden" value="0">
              
          <input name="rows" type="hidden" value="10">
              
          <input name="indent" type="hidden" value="on">
              
          <input name="wt" type="hidden" value="">
                
          <input type="button" value=" 搜 索 " onclick="xmlhttpPost('/solr/select');">
                
          <input type="button" value=" get json " onclick="document.forms['f1'].wt.value='json';document.forms['f1'].submit();">
                
          <input type="button" value=" get xml " onclick="document.forms['f1'].wt.value='';document.forms['f1'].submit();">
            
          </form>
            
          <div style="background-color: #ccccff; height: 15px;"></div>
            
          <p>
              
          <div id="header"></div>
              
          <div id="response"></div>
              
          <table id="docs" class="tab" cellspacing="1">
                  
          <tr height="25" style="background-color: #cccccc; color: #0000ff;">
                      
          <td>作者</td>
                      
          <td>簡介</td>
                      
          <td>標題</td>
                      
          <td>score</td>
                  
          </tr>
              
          </table>

          2.javascript部分
          function xmlhttpPost(strURL) {
              
          var xmlHttpReq = false;
              
          var self = this;
              
          if (window.XMLHttpRequest) { // Mozilla/Safari
                  self.xmlHttpReq = new XMLHttpRequest(); 
              }
              
          else if (window.ActiveXObject) { // IE
                  self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
              }
              
              
          var params = getstandardargs().concat(getquerystring());
              
          var strData = params.join('&');
              
              
          var header = document.getElementById("response");
              header.innerHTML 
          = strURL+'?'+strData;

              self.xmlHttpReq.open('get', strURL
          +'?'+strData+'&time='+new Date().getTime(), true);
              self.xmlHttpReq.setRequestHeader('Content
          -Type', 'application/x-www-form-urlencoded');
              self.xmlHttpReq.onreadystatechange 
          = function() {
                  
          if (self.xmlHttpReq.readyState == 4) {
                      updatepage(self.xmlHttpReq.responseText);
                  }
              }
              self.xmlHttpReq.send(
          null);
          }

          function getstandardargs() {
              
          var params = [
                  'wt
          =json'
                  , 'indent
          =on'
                  , 'hl
          =true'
                  , 'hl.fl
          ='
                  , 'fl
          =*,score'
                  , 'start
          =0'
                  , 'rows
          =10'
                  ];

              
          return params;
          }
          function getquerystring() {
            
          var form = document.forms['f1'];
            
          var query = form.q.value;
            qstr 
          = 'q=+ encodeURI(query);    //escape
            return qstr;
          }

          // this function does all the work of parsing the solr response and updating the page.
          function updatepage(str){
            
          //document.getElementById("response").innerHTML = str;
            var rsp = eval("("+str+")"); // use eval to parse Solr's JSON response
            parse(rsp);
          }

          function parse(j) {
              
          var header = document.getElementById("header");
              
          var rh = j.responseHeader;
              
          var header_str = " 搜索: \""+rh.params.q+"\", 花了: "+rh.QTime+"ms, 共顯示: "+j.response.numFound+"條記錄, 總共有: "+rh.params.rows;
              header.innerHTML 
          = header_str;
              
          var docs = j.response.docs;
              
          var tab = document.getElementById("docs");
              
          for(; tab.rows.length >1; ) {
                  tab.deleteRow(
          -1);
              }
              
          var tr;
              
          var td;
              
          for(var i=0; i<docs.length; i++) {
                  tr 
          = tab.insertRow(-1);
                  td 
          = tr.insertCell(-1);
                  td.innerHTML 
          = docs[i].author;
                  
                  td 
          = tr.insertCell(-1);
                  td.innerHTML 
          = docs[i].introduce;
                  
                  td 
          = tr.insertCell(-1);
                  td.innerHTML 
          = docs[i].title;
                  
                  td 
          = tr.insertCell(-1);
                  td.innerHTML 
          = docs[i].score;
              }
             }

          3.現在可以搜索了。
          http://localhost:8080/solr/json.jsp

          solr怎么部署到Tomcat里請看:http://www.aygfsteel.com/chenlb/archive/2008/03/25/188459.html

          posted on 2008-03-28 17:33 流浪汗 閱讀(2096) 評論(0)  編輯  收藏 所屬分類: Lucene
          主站蜘蛛池模板: 西林县| 崇义县| 多伦县| 吉安县| 灌云县| 三台县| 丹棱县| 新干县| 海原县| 乌兰浩特市| 屏东市| 莎车县| 龙南县| 浦东新区| 瓮安县| 抚松县| 绥滨县| 宝应县| 娄烦县| 多伦县| 托里县| 天柱县| 隆安县| 鄢陵县| 武宁县| 方正县| 青河县| 汉川市| 建湖县| 邻水| 微博| 枣庄市| 镇原县| 江陵县| 天柱县| 长白| 巴彦淖尔市| 茌平县| 武威市| 仙居县| 株洲县|