diff --git a/Lib/Search/BookSearch.php b/Lib/Search/BookSearch.php index f19049a..c59f528 100644 --- a/Lib/Search/BookSearch.php +++ b/Lib/Search/BookSearch.php @@ -45,15 +45,25 @@ class BookSearch */ } - public function addOrQuery(array $texts, $field) + public function addCompoundQuery(array $texts, $field, $operator) { if(count($texts) > 0) { $texts = array_map(array('SolrUtils', 'escapeQueryChars'), $texts); - $query = sprintf('%s:("%s")', $field, implode('" OR "', $texts)); + $query = sprintf('%s:("%s")', $field, implode('" '.$operator.'"', $texts)); $this->addQuery($query, null, false); } } + public function addOrQuery(array $texts, $field) + { + $this->addCompoundQuery($texts, $field, 'OR'); + } + + public function addAndQuery(array $texts, $field) + { + $this->addCompoundQuery($texts, $field, 'AND'); + } + public function addQuery($queryText, $queryField = null, $escape = true) { if($escape) { diff --git a/NetBiblio.php b/NetBiblio.php index f86f63b..efa92e1 100644 --- a/NetBiblio.php +++ b/NetBiblio.php @@ -13,7 +13,7 @@ use BSR\Lib\WebService; class NetBiblio extends WebService { /** @var string $version version number */ - public static $version = '1.0.5'; + public static $version = '1.0.6'; private $login = ''; private $client = 'website'; @@ -688,7 +688,8 @@ class NetBiblio extends WebService (is_array($queryArray[$q]) && count($queryArray[$q]) > 0) )) { if(is_array($queryArray[$q])) { - $bs->addOrQuery($queryArray[$q], $q); + // Genres cannot overlap, so we use 'OR', otherwise use 'AND' + $bs->addCompoundQuery($queryArray[$q], $q, $q == 'genreCode' ? 'OR' : 'AND'); } else { $bs->addQuery($queryArray[$q], $q); }