use 'OR' only for genres
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user