I typically use a very low wait time (250ms), record the isPartialResult() in a variable, then act on that partial result on the next "invalid" event. That essentially introduces a 250ms delay between the last letter selection and calling out to the API, and allows for letters entered in rapid succession to stack instead of queuing up for multiple API queries (i.e., one api.Search() call for "test" instead of four for "t", "te", "tes", and "test"). You could adjust that wait time up or down depending on your preference for delay.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)