Let's see if I've got this right?
complex query 1 --> RS1
RS1 --> full text search --> RS2
RS2 --> sorting --> print
OK. Sorting you can do on the client side with JAVA, as you can the print layout. This would eliminate server side retention of the search results RS2. Depends on your JAVA, but I bet there is something you can customise on http://javascript.internet.com/
From what I gather, you can not open a permanent connection to the db. If you could keep it alive, you would keep your temp table too.
Otherwise, you will have to save the results in a table, or rerun the text search each time. As I'm sure you realise, if RS2 is stored as a table you can keep re-using a very simple query to vary the sort order. But that means a good clean-up routine. How to detect when the user has finished playing with the results?? This is the real problem. Once you know this you know when to delete the table.
Of the 3 I prefer the first. Everyone seems to forget the vast amount of resources lying unused on the client-side. Save your server and let the client do the sorting and printing layout.
NB. If your result set is in virtual memory it is being paged on and off a disk anyway. Many operating systems use lazy-write to speed up file access, so your 'file' may already be in RAM. Some RDBMS can retain query result sets in transient tables in case the query is run again. Juging performance really is guesswork without detailed knowledge of the platform, and still probably requires benchmarking to decide.