We are using Opengrok and more recently Bit Bucket Elastic Search. Elastic Search seems to be the emerging search technology. However, I think Opengrok is far better. The main advantage I see is that it marks up the results. You can click on any variable/class/method in the results, just like you would in an IDE.
They both have cryptic search syntax, that I can live with.
There is quite a bit of back end work to keep Opengrok running - jenkins jobs to run indexing etc. We would like to have just one search tool... but for the moment Opengrok is simply better.