/**
  * @return the query used to fetch the documents from the Solr index
  * @throws SolrIndexerException if we fail to obtain a query for the configured root entity
  */
 private SolrQuery getQuery() throws SolrIndexerException {
   if (query == null) {
     query = new SolrQuery(solrReferenceResolver.getQuery(rootReference));
     query.setFields(
         FieldUtils.WIKI,
         FieldUtils.SPACES,
         FieldUtils.NAME,
         FieldUtils.DOCUMENT_LOCALE,
         FieldUtils.VERSION);
     query.addFilterQuery(FieldUtils.TYPE + ':' + EntityType.DOCUMENT.name());
     // We sort by ID, which is normally the serialized document reference, in order to ensure this
     // iterator has
     // the same order as the database iterator.
     query.addSort(FieldUtils.ID, ORDER.asc);
     // Paginate using a cursor because it performs better than basic pagination (using absolute
     // offset,
     // especially when the offset is big) and because the impact of index modifications is much
     // smaller (and we
     // plan to update the index to match the database during the synchronization process).
     // See https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results
     query.set(CursorMarkParams.CURSOR_MARK_PARAM, CursorMarkParams.CURSOR_MARK_START);
     query.setRows(LIMIT);
   }
   return query;
 }
 /**
  * @return the query used to fetch the documents from the Solr index
  * @throws SolrIndexerException if we fail to obtain a query for the configured root entity
  */
 private SolrQuery getQuery() throws SolrIndexerException {
   if (query == null) {
     query = new SolrQuery(solrReferenceResolver.getQuery(rootReference));
     query.setFields(
         FieldUtils.WIKI,
         FieldUtils.SPACE,
         FieldUtils.NAME,
         FieldUtils.DOCUMENT_LOCALE,
         FieldUtils.VERSION);
     query.addFilterQuery(FieldUtils.TYPE + ':' + EntityType.DOCUMENT.name());
     // We must add the unique key field (ID in our case) to the list of sort fields (as a tie
     // breaker) in order
     // to use the cursor-based pagination.
     query
         .addSort(FieldUtils.WIKI, ORDER.asc)
         .addSort(FieldUtils.SPACE_EXACT, ORDER.asc)
         .addSort(FieldUtils.NAME_EXACT, ORDER.asc)
         .addSort(FieldUtils.DOCUMENT_LOCALE, ORDER.asc)
         .addSort(FieldUtils.ID, ORDER.asc);
     // Speed up the query by disabling the faceting and the highlighting.
     query.set(FacetParams.FACET, false);
     query.set(HighlightParams.HIGHLIGHT, false);
     // Paginate using a cursor because it performs better than basic pagination (using absolute
     // offset,
     // especially when the offset is big) and because the impact of index modifications is much
     // smaller (and we
     // plan to update the index to match the database during the synchronization process).
     // See https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results
     query.set(CursorMarkParams.CURSOR_MARK_PARAM, CursorMarkParams.CURSOR_MARK_START);
     query.setRows(LIMIT);
   }
   return query;
 }