This nav_clusters.jsp sample file is used to render clusters that are generated by the Cluster Discovery feature.

This file should be included in the nav_controls.jsp file.

<%----------------------------------------------------------------------
DESCRIPTION:
This module demonstrates the Cluster Discovery feature.
It displays clusters received as Supplemental Objects, makes them
selectable, and, upon selection, generates a search based on
the selected clusters.

This module is included in the nav_controls.jsp module.

Copyright (C) 2008 by Endeca Technologies - COMPANY CONFIDENTIAL
-----------------------------------------------------------------------%>
<%
// Get supplemental list
SupplementList navsups = nav.getSupplements();
boolean clustersOn = false;

// lazily allocated:
List<String> clusterUrls = null;
List<String> clusterStrings = null;

// Loop over cluster supplemental objects
supLoop:
for (int i = 0; i < navsups.size(); ++i) {
  // Get individual see also object
  Supplement sup = (Supplement)navsups.get(i);
  // Get property map
  PropertyMap propsMap = sup.getProperties();

  String clustersPropName = (String)propsMap.get("DGraph.SeeAlsoCluster");
  if (clustersPropName != null) {
    if (!clustersOn) {
      // display title
      %>
      <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td colspan="5" bgcolor="orange">
      <font face="arial" size=2 color="white">
      Cluster Discovery</font></td></tr>
      <tr><td colspan="5"><img src="b.gif" height=3></td></tr>
      <%
      clustersOn = true;
    } // end of if !clustersOn
    String rankString = (String)propsMap.get("ClusterRank");
    String nTermsString = (String)propsMap.get("NTerms");
    int rank;
    int nTerms;
    try {
      rank = Integer.parseInt(rankString);
      nTerms = Integer.parseInt(nTermsString);
    } catch (NumberFormatException e) {
    // add code here to log error
      continue supLoop;
    } // end of catch

    StringBuffer termsSB = new StringBuffer();
    StringBuffer termsSBSpace = new StringBuffer();
    for (int iTerm = 0; iTerm < nTerms; ++iTerm) {
      String term = (String)propsMap.get("Term_"+iTerm);
      if (term == null) {
        // add code to log error
        continue supLoop;
      } 
    if (termsSB.length() != 0) {
    termsSB.append(", ");
    termsSBSpace.append(" ");
    } // end of if termsSB.length
      termsSB.append(term);
      termsSBSpace.append('"').append(term).append('"');
    } // end of for terms
    String clusterX = termsSB.toString();
    String clusterSpace = termsSBSpace.toString();
    // Create request to follow a cluster selection
    // (unless cluster selection already active in the searches)
    UrlENEQuery newq = new UrlENEQuery(request.getQueryString(), "UTF-8");
    ERecSearchList searches = newq.getNavERecSearches();
    ERecSearch newSearch = new ERecSearch("All", clusterSpace,
      "mode matchpartial");

    if (searches == null || !searches.contains(newSearch)) {
      if (searches == null)
        searches = new ERecSearchList();
      if (clusterUrls == null) {
        clusterUrls = new ArrayList<String>();
        clusterStrings = new ArrayList<String>();
      } // end of if clusterUrls
      searches.add(newSearch);
      newq.setNavERecSearches(searches);
      UrlGen hostportq = new UrlGen("", "UTF-8");
      hostportq.addParam("eneHost",
         (String)request.getAttribute("eneHost"));
      hostportq.addParam("enePort",
         (String)request.getAttribute("enePort"));
      String url = CONTROLLER + "?" + hostportq.toString() +
         "&" + UrlENEQuery.toQueryString(newq, "UTF-8");
      clusterUrls.add(url);
      clusterStrings.add(clusterX);
    } // end of if searches
  } // end of if clusterPropName != null
} // end of if clusterPropName != null

if (clusterStrings != null && clusterStrings.size() > 1) {
  // display clusters only if at least 2.
  for (int i = 0; i < clusterStrings.size(); ++i) {
    %>
    <tr><td><img src="b.gif" width=10></td>
    <td width="100%"><font face="arial" size="1" color="gray">
    > <a href="<%= clusterUrls.get(i) %>">
    <font face="arial" size="1" color="blue">
    <%= clusterStrings.get(i) %></font></a>
    </td></tr>
    <%
  } // end of for clusterStrings
} // end of if clusterStrings

if (clustersOn) {
  // close table
  %>
  <tr><td colspan="2"><img src="b.gif" height=30></td></tr>
  </table>
  <%
}%> // end of if clusterOn


Copyright © Legal Notices