From 73844b9eeb7d193236dc44fa8f86991ffed8301d Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 15 Apr 2017 19:31:11 +0100 Subject: [PATCH] Enabled type search filter in book search --- app/Services/SearchService.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); } /**