I am using a portal to show a certain set of "search" results to users (2 drop-downs: Region and Category restraints, and one Search Field aimed to search all fields in the layout). Since the user does not have access to cycle through records on the layout other than clicking one of the records in the portal, I realize I have some options.
Goal: The fastest portal filtering/filling for Web Direct when records are 2000+. (I had a search-as-you-type less broad setup for the layout and got complaints on speed delay so switched to non-search-as-type.)
(1) Have a script that performs a find and generates a Virtual List;
(2) Perform a find (regular or quick) then use a looping script to capture ID's;
(3) Using a "list of" summary field on your find results to get a list of IDs with set field used to copy the list into your match field.
(4) Other options.