You may not be thrilled with this advice, but I think you're fighting a losing battle. You really need to have the sorting and the searching done by one engine or you will kill your performance moving large result sets around like this.
If swish-e is not able to sort, maybe you should consider using a different search engine or doing the word search in Oracle. Besides the Oracle full-text search, there are also good alternatives like DBIx::FullTextSearch. Or you could keep the sorting data in a dbm file and then use a Schwartzian Transform to sort the swish-e results by it.