diff options
author | Matthew Somerville <matthew@mysociety.org> | 2020-07-31 15:27:42 +0100 |
---|---|---|
committer | M Somerville <matthew-github@dracos.co.uk> | 2020-08-06 20:28:57 +0100 |
commit | 52b1410f91669fab5f22cae9a9d9a040a0144c9a (patch) | |
tree | 66d15f9ca3bd866b52c79241f95152d685f2bad7 | |
parent | 1e7cba67a53eead8cedcbf6aa7af12eb7ff4bf63 (diff) |
Add extra ordering to search query to force full text index use.
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin/Reports.pm | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm index 052230643..e3a425632 100644 --- a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm @@ -92,6 +92,9 @@ sub index : Path { ]; } else { $problems = $problems->search_text($search); + # The below is added so that PostgreSQL does not try and use other indexes + # besides the full text search. It should have no impact on results shown. + $order = [ $order, { -desc => "me.id" }, { -desc => "me.created" } ]; } $problems = $problems->search( @@ -109,6 +112,7 @@ sub index : Path { $c->stash->{problems_pager} = $problems->pager; my $updates = $c->cobrand->updates; + $order = { -desc => 'me.id' }; if ($valid_email) { $query = [ 'user.email' => { ilike => $like_search }, @@ -126,6 +130,7 @@ sub index : Path { $query = 0; } else { $updates = $updates->search_text($search); + $order = [ $order, { -desc => "me.created" } ]; $query = 1; } @@ -140,7 +145,7 @@ sub index : Path { join => 'user', prefetch => [qw/problem/], rows => 50, - order_by => { -desc => 'me.id' } + order_by => $order, } )->page( $u_page ); $c->stash->{updates} = [ $updates->all ]; |