it's not possible to make or optimize the search script in php/mysql efficient enough that it could handle millions of posts, correct
I suppose it's a doubtful suggestion, because mySQL owners developing their product more and more optimized for large sets of data. But of course it's only oriented on a very specific case. I think using mySQL or other kind of database for a search engine is not the best method of implementation. As far as I know, big search programs are using straight text files, where each text file means kind of index. So when you search for something, this refers to the group of indexes i.e. files. I suppose Google uses each own indexing engine which is definitely not database-based.
I also think even if you search in topic titles by a simple keyword, this only increases a performance a bit, but still, execution is quite low as it may last for few seconds. I know forums where there is about 45,000 topics, the search in topic titles by a simple phrase takes there about 0,3 sec. on a dedicated server while there is about 200 users at second online. That's slow.
miniBB doesn't search in both topics and message texts for now. You can search only separately. This all is because for searching in topics and messages, we must have a special index field where these fields are concatenated. MySQL's FULLTEXT search is designed for such purpose, but it works only from the logical point of view, not the user's point of view. For example, if you type some keyword, and it's included in more than 80% of postings, search will fail saying the search term is not precise. FULLTEXT search is far from perfect in other aspects, too.
Also, what if someone hosted the forum on the most powerful, the fastest, dedicated server out there, would it make any difference if there were 10 million of posts or the hardware doesn't matter as much in this case..?
I suppose it doesn't matter. Such kind of server should handle just your forums engine - displaying first page, topics, posts, user profiles etc. As about search, it's the most complicated part of it and mySQL simply has no power to handle it on millions of records.
But I hope in the future when this "million" problem becomes obvious, maybe there will be other solutions.