ListOfDurations

master
Gilles Crettenand 11 years ago
parent 0129588d21
commit c872c7b9bc

@ -82,6 +82,11 @@ class BookSearch
$this->query->addFacetField($field); $this->query->addFacetField($field);
} }
public function setFacetRangeField($field)
{
$this->query->setParam('facet.range', $field);
}
public function setFacetLimits($limit = null, $count = null) public function setFacetLimits($limit = null, $count = null)
{ {
if(! is_null($limit)) { if(! is_null($limit)) {
@ -93,6 +98,13 @@ class BookSearch
} }
} }
public function setFacetRange($start, $end, $gap)
{
$this->query->setParam('facet.range.start', $start);
$this->query->setParam('facet.range.end', $end);
$this->query->setParam('facet.range.gap', $gap);
}
/** /**
* @param int $start * @param int $start
* @param int $count * @param int $count
@ -147,6 +159,19 @@ class BookSearch
$facets[$f] = $d; $facets[$f] = $d;
} }
} }
if(isset($results['facet_counts']['facet_ranges'])) {
$integer = strpos($this->query->getParam('facet.range.gap'), '.') === false;
foreach($results['facet_counts']['facet_ranges'] as $f => $d) {
if($integer) {
$facets[$f] = array();
foreach($d['counts'] as $k => $v) {
$facets[$f][intval($k)] = $v;
}
} else {
$facets[$f] = $d['counts'];
}
}
}
return array( return array(
'count' => $results['response']['numFound'], 'count' => $results['response']['numFound'],
@ -233,4 +258,27 @@ class BookSearch
$results = $bs->getResults(0, $count); $results = $bs->getResults(0, $count);
return $results['books']; return $results['books'];
} }
public static function GetTerms($field) {
$s = new BookSearch();
$s->addQuery(1, 'visible');
$s->addFacetField($field);
$s->setFacetLimits(2000, 10);
$results = $s->getResults(0, 0);
return $results['facets']['facets'][$field];
}
public static function GetTermsRange($field) {
$s = new BookSearch();
$s->addQuery(1, 'visible');
$s->setFacetRangeField($field);
$s->setFacetRange(0, 250, 1);
// to avoid useless calculation, only set this 'normal' facet
$s->addFacetField('visible');
$results = $s->getResults(0, 0);
return $results['facets']['facets'][$field];
}
} }

@ -13,7 +13,7 @@ use BSR\Lib\WebService;
class NetBiblio extends WebService class NetBiblio extends WebService
{ {
/** @var string $version version number */ /** @var string $version version number */
public static $version = '1.0.4'; public static $version = '1.0.5';
private $login = ''; private $login = '';
private $client = 'website'; private $client = 'website';
@ -721,6 +721,16 @@ class NetBiblio extends WebService
return $bs->suggest($text); return $bs->suggest($text);
} }
/**
* This method returns the list of all volunteer readers that read book
* in the database.
* @return array
*/
public function ListOfDurations()
{
return BookSearch::GetTermsRange('duration');
}
/** /**
* This method returns the list of all volunteer readers that read book * This method returns the list of all volunteer readers that read book
* in the database. * in the database.

Loading…
Cancel
Save