code: public CloseableIterator<CaptureSearchResult> getPrefixIterator(String prefix)
  			throws ResourceIndexNotAvailableException {
  
  		Comparator<CaptureSearchResult> comparator = new SearchResultComparator();
  		CompositeSortedIterator<CaptureSearchResult> itr = new CompositeSortedIterator<CaptureSearchResult>(comparator);
  		
  		int added = 0;
  		ResourceIndexNotAvailableException lastExc = null;
  		
  		for (int i = 0; i < sources.size(); i++) {
  			SearchResultSource source = sources.get(i);
  			
  			try {
  				itr.addComponent(source.getPrefixIterator(prefix));
  				added++;
  			} catch (ResourceIndexNotAvailableException e) {
  				if (source instanceof ZipNumClusterSearchResultSource) {
  					if (((ZipNumClusterSearchResultSource)source).getCluster().isRequired()) {
  						throw e;
  					}
  				}
  				
  				lastExc = e;
  			}
  		}
  		
  		if ((lastExc != null) && (added == 0)) {
  			try {
  				itr.close();
  			} catch (IOException io) {
  				
  			}
  			throw lastExc;
  		}
  		
  		return itr;
  	}
docs: /*
  (non-Javadoc)
  
  @see org.archive.wayback.resourceindex.SearchResultSource#getPrefixIterator(java.lang.String)