/** * Do the actual 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 */ protected function doSearch(Search\Query $search, $start = 1, $max = 10, $sort = "", $facets = true) { $records = $this->reading_list->getRecords(); $results = new Search\ResultSet($this->config); $results->total = count($records); // convert them into our model foreach ($records as $record) { $result = $this->createSearchResult($record); $results->addResult($result); } return $results; }
/** * Do the actual 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 */ protected function doSearch(Search\Query $search, $start = 1, $max = 10, $sort = "", $facets = true) { $username = $search->getQueryTerm(0)->phrase; $label = $search->getLimit("label"); $format = $search->getLimit("format"); $results = new Search\ResultSet($this->config); $results->total = $this->datamap->totalRecords($username, $label->value, $format->value); // just the hit count please if ($max == 0) { return $results; } // no we want actual records too $records = array(); if ($label->value != "") { $records = $this->datamap->getRecordsByLabel($username, $label->value, $sort, $start, $max); } elseif ($format->value != "") { $records = $this->datamap->getRecordsByFormat($username, $format->value, $sort, $start, $max); } else { $records = $this->datamap->getRecords($username, null, $sort, $start, $max); } // convert them into our model foreach ($records as $record) { $result = $this->createSearchResult($record); $results->addResult($result); } // facets $facets = new Search\Facets(); // formats $formats = $this->datamap->getFormats($username); if (count($formats) > 0) { $group = new Search\FacetGroup(); $group->name = "format"; $group->public = "Formats"; // @todo: i18n this? foreach ($formats as $format) { $facet = new Search\Facet(); $facet->name = $format->format; $facet->count = $format->total; $group->addFacet($facet); } $facets->addGroup($group); } // labels $tags = $this->datamap->getTags($username); if (count($tags) > 0) { $group = new Search\FacetGroup(); $group->name = "label"; $group->public = "Labels"; // @todo: i18n this? foreach ($tags as $tag) { $facet = new Search\Facet(); $facet->name = $tag->label; $facet->count = $tag->total; $group->addFacet($facet); } $facets->addGroup($group); } $results->setFacets($facets); return $results; }