Twitter bought the code for the search API when they acquired Summize, and while it did give them a fast search, I get the feeling they aren’t too happy about the quality of the code. The biggest hint is that they never fix it. The best example is the documented bug about the search API returning invalid user ids. That’s right. When you do a search with this API, the id reported for the author of the tweets is often invalid. Not always, but a high percentage. This was added to their bug tracking system 2 years ago! Another big issue is the lack of tweet entities in search results. This doesn’t mean that the search API is worthless. I often use it to get applications going, and there are even some benefits over the streaming API, as I note in my tutorial on this subject.
Now Twitter has a real problem with search. Sometime last week the ability to use the
lang parameter in a search broke. I use it as
lang=en to get tweets in English. This has never been 100% effective, but it used to filter out most of the non-English tweets. Throughout the week various uses of the search API with the lang parameter stopped returning any results at all, which I would classify as a serious bug. There were complaints about this all week, but since it was Thanksgiving, nobody at Twitter replied. On Monday they did finally say they were looking at it.
I understand how the Twitter engineers feel. I’ve been in the position of maintaining and improving acquired code, and it can be a bitch. My development team at Andover.net had the unpleasant task of rewriting the code for Slashdot after we acquired it and we were in the middle of going public. So I sympathize with the problem Twitter faces, but they can’t push this off to some long-term version 2 solution. If they leave this broken for more than another week, things will get hot, and the press will discover the problem. There are already signs a lot of the MSM is starting to try and tear down what has become a major competitor. This problem is now strategic, not just a wish list item that can be ignored.
Update: Twitter now says this problem is fixed, and my tests show that the lang parameter is now working. Good job. Now about that user_id issue.