There are a few hundred cases a day when the timeout problem happens. Maybe that's not even bad, considering we serve more than 100,000 requests per day. But for the user it's frustrating to wait 10 seconds and then just get an error message. Maybe a solution is to collect matches as they are found, and in case of a timeout send at least the matches found so far. That requires some internal changes, but I've added that to my TODO list.