You could also create a relationship using a global in transaction that connects to a field in contacts.
The field in contacts can be an indexed calc that contains names, or part of names (there is a great custom function that expands text entered in a field - I think it's called explodestring or something like that). This way, you could type a name, or part of a name into the global and it "instantly" shows possible matching names within the portal.
There are a number of techniques for "contact" selection that work from any table to any other table. There are some neat ones out there that use globals and custom funtions, SQL functions and other methods.
You could even set it up to filter the portal as soon as you begin to type text (using keystroke triggers)
Creating a cartesian join between the two tables (call the TO AllContacts or something similar) will allow you to use a portal.