/**
  * Display a listing of the resource.
  *
  * @param \Illuminate\Http\Request $request
  *
  * @return \Quoterr\Http\Controllers\Response
  */
 public function index(Request $request)
 {
     $q = $request->get('q');
     $tag = str_slug($q);
     $authors = Author::where('name', 'ilike', "%{$q}%")->take(20)->get();
     $tags = Tag::where('name', 'ilike', "%{$tag}%")->take(20)->get();
     $query = \DB::table(\DB::raw("quotes, to_tsvector(quotes.content) target, to_tsquery('english', ?) query"))->select(['quotes.*', \DB::raw('ts_rank_cd(target, query) as rank')])->setBindings([str_replace(' ', '|', $q)]);
     $quotes = Quote::query()->setQuery($query)->published()->whereRaw(\DB::raw('target @@ query'))->orderBy('rank', 'desc')->paginate(50);
     foreach ($quotes as $quote) {
         $quote->content = $this->highlight($quote->content, $q);
     }
     $quotes->load(['author']);
     $quotes->appends(\Input::except('page'));
     return view('quote.index', compact('authors', 'tags', 'quotes', 'q'));
 }