Changeset 8347


Ignore:
Timestamp:
2004-10-18T09:39:56+13:00 (20 years ago)
Author:
kjdon
Message:

first stab at generating the results the java way. seems to work sporadically

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/Visualizer.java

    r8346 r8347  
    3232import vishnu.server.Search.*;
    3333import vishnu.datablock.*;
     34import vishnu.util.Base64;
    3435
    3536public class Visualizer
     
    7071    app_info += "<PARAM NAME='collection'   VALUE='" + this.cluster_name + "'/>";
    7172    app_info += "<PARAM NAME='engine'   VALUE='GSDLEngine' />";
     73    // add view info if appropriate
    7274    app_info += "The visualization applet.</"+GSXML.APPLET_ELEM+">";
    7375       
     
    134136    if (type.equals("search")) {
    135137
    136         Element cluster_results = this.doc.createElement("cluster");
    137         vis_data.appendChild(cluster_results);
    138         Element description_results = this.doc.createElement("descriptions");
    139         vis_data.appendChild(description_results);
     138        //Element cluster_results = this.doc.createElement("cluster");
     139        //vis_data.appendChild(cluster_results);
     140        //Element description_results = this.doc.createElement("descriptions");
     141        //vis_data.appendChild(description_results);
    140142
    141143        String query = (String)params.get("q");
     
    149151        descriptions = engine.getDocDescriptions();
    150152       
     153        DataBlock db = generateDataBlock(collection_home, null, doc_nums, descriptions);
     154        System.err.println("got back data, now converting to string");
     155        try {
     156        results = Base64.encodeObject(db);
     157        } catch (Exception e) {
     158        System.err.println("trying to base64 encode the datablock, but exception happened: "+e);
     159        }
     160        System.err.println("after converting to string");
     161//      // serialise the data block
     162//      try {
     163//      ByteArrayOutputStream baos = new ByteArrayOutputStream();
     164//      ObjectOutputStream oos = new ObjectOutputStream(baos);
     165//      oos.writeObject(db);
     166//      oos.close();
     167       
     168//      //results = baos.toString("UTF-8");
     169//      results = Base64.encode(baos.toByteArray());
     170//      } catch (Exception e) {
     171//      System.err.println("Visualizer serialise data block error: "+e);
     172//      }
    151173        //System.err.println("num docs = "+doc_nums.size());
    152174        //Cluster c = new Cluster();
     
    156178
    157179        Text t = this.doc.createTextNode(results);
    158         cluster_results.appendChild(t);
    159 
    160         for (int i=0; i<descriptions.size(); i++) {
    161         String d = (String)descriptions.get(i);
    162         Element de = GSXML.createTextElement(this.doc, "desc", d);
    163         description_results.appendChild(de);
    164         }
     180        vis_data.appendChild(t);
     181
     182//      for (int i=0; i<descriptions.size(); i++) {
     183//      String d = (String)descriptions.get(i);
     184//      Element de = GSXML.createTextElement(this.doc, "desc", d);
     185//      description_results.appendChild(de);
     186//      }
     187        System.err.println("end of search");
    165188    } else if (type.equals("fetch")) {
    166189        String docNum = (String)params.get("d");
     
    176199        return result;
    177200    }
     201    System.err.println("returning result");
     202    return result;
     203    }
     204
     205    private DataBlock generateDataBlock(String collection_home, String view, Vector docNums, Vector descriptions) {
     206
     207    if (docNums.size()==0) {
     208        return null;
     209    }
     210    DataBlock data = new DataBlock();
     211
     212    CKServer ck_server = new CKServer(collection_home, view);
    178213   
    179     return result;
    180     }
     214    /**** set data fields one by one and pass one what ever gets assembled ****/
     215       
     216    try{
     217       
     218        ck_server.setDescriptions(descriptions);
     219       
     220        /**** get candidate keywords ****/
     221       
     222        String[] keywords = ck_server.computeKeywords(docNums);
     223       
     224        data.words = keywords;
     225       
     226       
     227        /**** get sparse document * keyword matrix ****/
     228       
     229        SparseMatrix matrix = ck_server.getSparseMatrix(docNums);
     230       
     231        data.matrix = matrix;
     232       
     233       
     234        /**** get document indices, this is a subset of the original ****/
     235        /**** those without keywords are excluded                    ****/
     236       
     237        int[] docs = ck_server.getHitDocuments();
     238       
     239        data.docs = docs;
     240       
     241       
     242        String[] desc = ck_server.getHitDescriptions();
     243       
     244        data.descriptions = desc;
     245       
     246       
     247        /**** get 10 or so clusters ****/
     248       
     249        Vector[] clusters = ck_server.getClusters();
     250       
     251        data.clusters = clusters;
     252       
     253       
     254        double[][] centroids = ck_server.getCentroids();
     255       
     256       
     257        /**** send their centroids through sammon mapping ****/
     258       
     259        Point2D[] sammon = ck_server.getSammonMap(centroids);
     260       
     261        System.err.println("Num descriptions: " + descriptions.size());
     262        System.err.println("Num docs: " + docs.length);
     263        System.err.println("Num desc: " + desc.length);
     264       
     265        data.sammon = sammon;
     266        System.err.println("end of try in generatedatablock");
     267    } catch (Exception e) {
     268        System.err.println("VisServlet: computing clustering Error: "+e);
     269        e.printStackTrace();
     270    }
     271    ck_server = null;
     272    System.err.println("returning data");
     273    return data;
     274    }
     275
    181276}
    182277
Note: See TracChangeset for help on using the changeset viewer.