David,
I would write a short web script which takes as a parameter the description value, and performs a Lucene search to look for matching nodes. The script could either return a short piece of XML or some plain text containing the space URL which is then used by your application, or it could return some actual HTML which performs the redirection in the user's browser directly using JavaScript. Or both, as web scripts can support multiple response formats. Error handling is also supported OOTB.
One last thing - while using the description field is quite valid, you should really be using your own model to hold these external ID values so that they cannot be accidentally changed in the web client. You could also implement a custom constraint to force uniqueness.
Cheers,
Will.