X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/dcde599709ba14637f9170f8a42fc83f9e39bce9..refs/pull/363/head:/app/Services/SearchService.php diff --git a/app/Services/SearchService.php b/app/Services/SearchService.php index ec4889e50..a3186e8f4 100644 --- a/app/Services/SearchService.php +++ b/app/Services/SearchService.php @@ -97,10 +97,16 @@ class SearchService public function searchBook($bookId, $searchString) { $terms = $this->parseSearchString($searchString); + $entityTypes = ['page', 'chapter']; + $entityTypesToSearch = isset($terms['filters']['type']) ? explode('|', $terms['filters']['type']) : $entityTypes; + $results = collect(); - $pages = $this->buildEntitySearchQuery($terms, 'page')->where('book_id', '=', $bookId)->take(20)->get(); - $chapters = $this->buildEntitySearchQuery($terms, 'chapter')->where('book_id', '=', $bookId)->take(20)->get(); - return $results->merge($pages)->merge($chapters)->sortByDesc('score')->take(20); + foreach ($entityTypesToSearch as $entityType) { + if (!in_array($entityType, $entityTypes)) continue; + $search = $this->buildEntitySearchQuery($terms, $entityType)->where('book_id', '=', $bookId)->take(20)->get(); + $results = $results->merge($search); + } + return $results->sortByDesc('score')->take(20); } /**