text: I agree with Jonathan's excellent answer. I would only add one the following:\n\nSearch engine software will be dealing with strings and string manipulation in a big way, so you might want to think about native language string support. Native string support in C, for example, is weak at best, while C++ provides powerful string classes.\n\nOf the languages you mention, Perl has very good string support, suitable for a smaller scale project. My preference would be Java, however, for anything significant that needs room to grow. Consider a Java servlet running under Apache Tomcat with a MySQL backend.\n\nA modular approach is important, if you expect the project to scale into the mainstream. At some point, you might want to replace MySQL with Oracle, or the search engine backend with C++, while maintaining a Java servlet at the front-end, for example.\n\n\nAdded Note:\nDon't let anyone tell you there is one "best" language. That would be more like religion than technology. If you want the fastest, assembly language performs the "best" by far, but you'd have to write code for a lifetime. Always select the technologies most appropriate for your needs, while considering availability of skills and availability of resources.\n\nAdded Note 2:\nGoogle's technology is based on distributed computing -- massive numbers of PCs working in parallel. This architecture is not well-suited to a RDBMS. Google is one search engine, not every search engine.\n\nAdded Note 3:\nAvoid Windows for anything not on the desktop. Now that's religion!