diff --git a/app/Entity.php b/app/Entity.php index 42323628a..122aa2aa2 100644 --- a/app/Entity.php +++ b/app/Entity.php @@ -100,10 +100,14 @@ abstract class Entity extends Model */ public static function fullTextSearchQuery($fieldsToSearch, $terms, $wheres = []) { - $termString = ''; - foreach ($terms as $term) { - $termString .= htmlentities($term) . '* '; + foreach ($terms as $key => $term) { + $term = htmlentities($term); + if (preg_match('/\s/', $term)) { + $term = '"' . $term . '"'; + } + $terms[$key] = $term . '*'; } + $termString = "'" . implode(' ', $terms) . "'"; $fields = implode(',', $fieldsToSearch); $termStringEscaped = \DB::connection()->getPdo()->quote($termString); $search = static::addSelect(\DB::raw('*, MATCH(name) AGAINST('.$termStringEscaped.' IN BOOLEAN MODE) AS title_relevance')); @@ -113,9 +117,8 @@ abstract class Entity extends Model foreach ($wheres as $whereTerm) { $search->where($whereTerm[0], $whereTerm[1], $whereTerm[2]); } - // Load in relations - if (static::isA('page')) { + if (static::isA('page')) { $search = $search->with('book', 'chapter', 'createdBy', 'updatedBy'); } else if (static::isA('chapter')) { $search = $search->with('book'); diff --git a/app/Repos/PageRepo.php b/app/Repos/PageRepo.php index fa5f7dd01..bfaff79ae 100644 --- a/app/Repos/PageRepo.php +++ b/app/Repos/PageRepo.php @@ -208,7 +208,9 @@ class PageRepo } else { $terms = []; } - $terms = array_merge($terms, explode(' ', $term)); + if (!empty($term)) { + $terms = array_merge($terms, explode(' ', $term)); + } $pages = $this->page->fullTextSearchQuery(['name', 'text'], $terms, $whereTerms) ->paginate($count)->appends($paginationAppends);