I understand that the default MySQL fulltext word size is 4 or more characters, but this is adjustable in MySQL 4.x. Shouldn't this code instead compare to the value of the MySQL variable 'ft_min_word_len'? Or possibly have a constant defined somewhere, not just a hardcoded 3.
In addition, the search term should probably first be broken into its component words, then tested for length. If I try to search for 'php net', Serendipity won't complain about the length of the search term, but it still won't return results (assuming the default MySQL settings).