add duration to search parameters

master
Gilles Crettenand 11 years ago
parent d797f62c47
commit f5c349b2e6

@ -59,6 +59,11 @@ class BookSearch
$this->queryParts[] = $queryText;
}
public function addRange($field, $min = '*', $max = '*')
{
$this->queryParts[] = sprintf('%s:[%s TO %s]', $field, $min, $max);
}
public function addSortField($field, $order = \SolrQuery::ORDER_DESC)
{
$this->query->addSortField($field, $order);

@ -580,18 +580,29 @@ class NetBiblio extends WebService
* ° queryText : the text to search for
* ° queryType : the field to search in, defaults to 'text'
*
* ° genre : array of 'genreCode' to search for
* ° jeunesse : only display books for kids (must have format 'jeunesse' => array('filtrer' => 'filtrer')
*
* ° producerCode : filter by 'producerCode'
* ° genreCode : filter by 'genreCode'
* ° author : filter by 'author'
* ° reader : filter by 'reader'
* ° motsMatieres : filter by 'motsMatieres'
*
* ° duration : exact duration in hours, duration are saved as float in Solr
* ° durationMin : minimal duration in hours
* ° durationMax : maximal duration in hours
*
* ° count : number of results we want
* ° page : page to start at (0 is the first)
*
* Shortcuts :
*
* ° producer : synonym for 'producerCode' (see above)
* ° genre : synonym for 'genreCode' (see above)
*
* Deprecated, but still in use on mobile apps :
*
* ° category : synonym for 'genre' (see above)
* ° producer : synonym for 'producerCode' (see above)
*
* Return value :
*
@ -658,6 +669,14 @@ class NetBiblio extends WebService
$bs->addQuery(1, 'jeunesse');
}
if(isset($queryArray['duration'])) {
$bs->addQuery($queryArray['duration'], 'duration');
} else if(isset($queryArray['durationMin']) || isset($queryArray['durationMax'])) {
$min = isset($queryArray['durationMin']) ? $queryArray['durationMin'] : '*';
$max = isset($queryArray['durationMax']) ? $queryArray['durationMax'] : '*';
$bs->addRange('duration', $min, $max);
}
$availableFields = array('producerCode', 'genreCode', 'author', 'reader', 'motsMatieres');
foreach($availableFields as $q) {
if(isset($queryArray[$q]) && (

Loading…
Cancel
Save