#**
 *  Actual rendering of Clusters
 *#

## For each cluster
#foreach ($clusters in $response.response.clusters)

  #set($labels = $clusters.get('labels'))
  #set($docs = $clusters.get('docs'))

  ## This Cluster's Heading
  <h3>
    #foreach ($label in $labels)
      ## Keep the following line together to prevent
      ## a space appearing before each comma
      $label#if( $foreach.hasNext ),#end
    #end
  </h3>

  ## This Cluster's Documents
  <ol>
    ## For each doc in this cluster
    #foreach ($cluDoc in $docs)
      <li>
        <a href="#url_for_home?q=id:$cluDoc">
          $cluDoc</a>
      </li>
    #end
  </ol>

#end   ## end for each Cluster
