/**
  * Starts a autocomplete search
  * @param string $sSearchString Reference to given search string
  * @param boolean $vNsSearch bool always false
  * @return array Array of Apache_Solr_Documents
  */
 private static function searchAutocomplete(&$sSearchString, &$vNsSearch)
 {
     $oSerachService = SearchService::getInstance();
     $oSearchRequest = new SearchRequest();
     $oSearchRequest->init();
     $oSearchOptions = new SearchOptions($oSearchRequest, RequestContext::getMain());
     $oSearchOptions->readInSearchRequest();
     $sSearchString = urldecode($sSearchString);
     $sSolrSearchString = self::preprocessSearchInput($sSearchString);
     $aQuery = $oSearchOptions->getSolrAutocompleteQuery($sSearchString, $sSolrSearchString);
     try {
         $oHits = $oSerachService->search($aQuery['searchString'], $aQuery['offset'], $aQuery['searchLimit'], $aQuery['searchOptions']);
     } catch (Exception $e) {
         return '';
     }
     $oDocuments = $oHits->response->docs;
     if ($aQuery['namespace'] !== false) {
         $vNsSearch = $aQuery['namespace'];
     }
     $bEscalateToFuzzy = $oHits->response->numFound == 0;
     // boolean!
     // Escalate to fuzzy
     if ($bEscalateToFuzzy) {
         $oSearchOptions->setOption('scope', 'title');
         $aFuzzyQuery = $oSearchOptions->getSolrFuzzyQuery($sSolrSearchString);
         $aFuzzyQuery['searchLimit'] = BsConfig::get('MW::ExtendedSearch::AcEntries');
         $aFuzzyQuery['searchOptions']['facet'] = 'off';
         $aFuzzyQuery['searchOptions']['hl'] = 'off';
         try {
             $oHits = $oSerachService->search($aFuzzyQuery['searchString'], $aFuzzyQuery['offset'], $aFuzzyQuery['searchLimit'], $aFuzzyQuery['searchOptions']);
         } catch (Exception $e) {
             return '';
         }
         $oDocuments = $oHits->response->docs;
     }
     return $oDocuments;
 }