Beside Google (Custom Search) and Amazon's (ElastiCache) services I prefer a custom service running on my own server based on filesystem.
It seems that Apache Lucene is the best and most common. It is available in java and .net. It is also in available in php in the form of a zend framework module.
Built on it there are Apache Solr and
Elastic ElasticSearch.
See solr vs elasticsearch and stackoverflow
Here are some more (not evaluated!)
See docu
set JAVA_HOME=G:\lang\Solr\OpenJDK8u192-b12
./bin/solr start -e cloud
solr start|stop|restart|healthcheck|create|create_core|create_collection|delete|version|zk|auth|assert|config] solr start -c -m 1g -z localhost:2181 -a "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" solr start -help > -h host|-p port|-d dir(server)|-m memory|-s dir(solr.solr.home)|-t dir(solr.data.home)|-v (verbose log)
Linux: solr-7.5.0:$ bin/post -c techproducts example/exampledocs/* Windows: java -jar -Dc=techproducts -Dauto example\exampledocs\post.jar example\exampledocs\*