/** * Fetch search results, log it, check spelling (if necessary) */ public function resultsAction() { // params $start = $this->query->start; $max = $this->query->max; $sort = $this->query->sort; $sort_id = $this->query->sort_id; $include_facets = $this->request->getParam('include_facets', $this->include_facets); // keep search refinements, if not set by user already and so configured if ($this->request->getSessionData('clear_facets') == '' && $this->config->getConfig('KEEP_SEARCH_REFINEMENT', false, false)) { $this->request->setSessionData('clear_facets', 'false'); } // search $results = $this->engine->searchRetrieve($this->query, $start, $max, $sort, $include_facets); // total $total = $results->getTotal(); // display spelling suggestion if ($start <= 1) { $suggestion = $this->checkSpelling(); $this->helper->addSpellingLink($suggestion); $this->response->setVariable('spelling', $suggestion); } // track the query $id = $this->helper->getQueryID(); if ($this->request->getSessionData("stat-{$id}") == "") { // log it try { $log = new Stats(); $log->logSearch($this->id, $this->query, $results); } catch (\Exception $e) { trigger_error('search stats warning: ' . $e->getMessage(), E_USER_WARNING); } // mark we've saved this search log $this->request->setSessionData("stat-{$id}", (string) $total); } // include original record if ($this->config->getConfig('INCLUDE_ORIGINAL_RECORD_IN_BRIEF_RESULTS', false)) { foreach ($results->getRecords() as $record) { $record->includeOriginalRecord(); } } // always cache the total based on the last action $this->request->setSessionData($id, (string) $total); // add links & labels $this->helper->addResultsLabels($results); $this->helper->addRecordLinks($results); $this->helper->addFacetLinks($results); $this->helper->addQueryLinks($this->query); // summary, sort & paging elements $results->summary = $this->helper->summary($total, $start, $max); $results->pager = $this->helper->pager($total, $start, $max); $results->sort_display = $this->helper->sortDisplay($sort_id); // response $this->response->setVariable('query', $this->query); $this->response->setVariable('results', $results); // view template $this->response->setView($this->id . '/results.xsl'); return $this->response; }
/** * Search and return results * * @param Query $search search object * @param int $start [optional] starting record number * @param int $max [optional] max records * @param string $sort [optional] sort order * @param bool $facets [optional] whether to include facets * * @return Results */ public function searchRetrieve(Search\Query $search, $start = 1, $max = 10, $sort = "", $facets = true) { // get the results $results = parent::searchRetrieve($search, $start, $max, $sort, $facets); // find any holding we have cached $results->injectHoldings(); return $results; }
/** * Search and return results * * @param Query $search search object * @param int $start [optional] starting record number * @param int $max [optional] max records * @param string $sort [optional] sort order * @param bool $facets [optional] whether to include facets * * @return Results */ public function searchRetrieve(Search\Query $search, $start = 1, $max = 10, $sort = "", $facets = true) { // get the results $results = parent::searchRetrieve($search, $start, $max, $sort, $facets); // enhance $results->markFullText(); // sfx data return $results; }
/** * Search and return results * * @param Query $search search object * @param int $start [optional] starting record number * @param int $max [optional] max records * @param string $sort [optional] sort order * @param bool $facets [optional] whether to include facets * * @return Results */ public function searchRetrieve(Search\Query $search, $start = 1, $max = 10, $sort = "", $facets = true) { // get results $results = parent::searchRetrieve($search, $start, $max, $sort, $facets); // enhance if ($this->config->getConfig('mark_fulltext_using_export', false, false)) { $results->markFullText(); // sfx data } return $results; }
/** * Search and return results * * @param Query $search search object * @param int $start [optional] starting record number * @param int $max [optional] max records * @param string $sort [optional] sort order * @param bool $facets [optional] whether to include facets * * @return Results */ public function searchRetrieve(Search\Query $search, $start = 1, $max = 10, $sort = "", $facets = true) { // get the results try { $results = parent::searchRetrieve($search, $start, $max, $sort, $facets); } catch (DatabaseException $e) { if ($this->database_refresh == 0) { $this->getQuery()->getDatabases(true); // force a refresh $this->database_refresh = 1; // don't repeat this twice, please $this->searchRetrieve($search, $start, $max, $sort, $facets); // let's try that again } else { throw $e; } } // enhance $results->markRefereed(); $results->markFullText(); return $results; }