diff --git a/module/VuFind/src/VuFind/Search/Base/Params.php b/module/VuFind/src/VuFind/Search/Base/Params.php index d035b0ff1169fbe5baf43ec5987a43239346f297..cb41f3086ad5d2b1cc14b5a8ac9e28840565abca 100644 --- a/module/VuFind/src/VuFind/Search/Base/Params.php +++ b/module/VuFind/src/VuFind/Search/Base/Params.php @@ -805,10 +805,11 @@ class Params /** * Detects if a filter is advanced (true) or simple (false). An advanced - * filter is currently defined as one surrounded by parentheses, while a - * simple filter is of the form field:value. Advanced filters are used to - * express more complex queries, such as combining multiple values from - * multiple fields using boolean operators. + * filter is currently defined as one surrounded by parentheses (possibly + * with a leading exclusion operator), while a simple filter is of the form + * field:value. Advanced filters are used to express more complex queries, + * such as combining multiple values from multiple fields using boolean + * operators. * * @param string $filter A filter string * @@ -816,7 +817,7 @@ class Params */ public function isAdvancedFilter($filter) { - if (substr($filter, 0, 1) == '(') { + if (substr($filter, 0, 1) == '(' || substr($filter, 0, 2) == '-(') { return true; } return false;