|
|
|
@ -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];
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|