There are tools such as recoll, swish-e and sphinx but you'd have to check if they can support the sort of search criteria you need.
Recoll is a personal full text search tool for Unix/Linux.
Swish-e is a fast, flexible, and free open source system for indexing collections of Web pages or other files.
Sphinx lets you either batch index and search data stored in an SQL database, NoSQL storage, or just files quickly and easily
I'm surprised grep is as slow as you describe, can you reduce the number of files being searched? For example when I only need to search the source files for one executable (out of many in a project) I feed grep the names from a command that lists the source files for that program:
grep expression `sources myprogram`
sources is a program specific to my development environment but you may have (or be able to construct) something equivalent.
I'm assuming you've tried obvious techniques such as
find /foo/myproject -name "*.c" -exec fgrep -l searchtext
I've read a suggestion that the
-P option of current
grep can speed up searches significantly.