Improve sort performance in PostgreSQL?
Why is it slow?
I would advise to use the query @ypercube provided in combination with the mentioned indexes. But why is the query you had so slow in comparison?
You did not provide your table definition, but I assume from the column names and what you wrote that you have several (large) character type (text or varchar) columns in the table articles:
title, shorttitle, description, markdown, body, idx_fti

I further assume that you are running your database with a locale other than C. Sorting large text columns according to a locale is rather expensive. The relevant thing is the collation. Check your (current) setting for LC_COLLATE:
SHOW LC_COLLATE;

With Postgres 9.1 or later you can pick a collation for evaluating your expressions ad hoc. With PostgreSQL 8.4, however, this is set at cluster creation time and can't be changed later.
We recently had a related question on SO where after much deliberation and testing we found sorting according to a locale to be the major slowdown:

Slow query ordering by a column in a joined table

I expect @ypercube's query to solve that problem radically: No GROUP BY for the long text columns eliminates the expensive sort altogether. Problem solved.