Well, free is free. Sometimes free overly exceeds expectations and many times paid fails to reach those same expectations.
Of course free has it’s limits, such as possible lack of config, branding etc. But hey, it is free. Swiftype at $299 a month mentioned above is always an option for example. Funny thing is, Swiftype actually used to be $19 a month by contrast early last year. That’s quite an amazing price hike by them since - huh? Almost 1500%
By contrast take others like Algolia Search, as one example which offers Free + paid, and is a lot cheaper than Swiftype concerning the paid options.
Did you look at the sample site I linked to above that was done in Blocs. It uses a PopOver / iFrame to load the results on the site not offsite, that then link to the intended pages referenced. I would assume you could open the chosen link in the same window as well. Is that what you mean?
I also provided two links discussing Google CSE appearance / branding options and settings. The GSS paid version allows further brand customization as well of course.
There are some free pre-existing PHP/MySQL alternatives as well. However many look old and outdated (hence security). But perhaps most importantly they would be overly complex to deploy for the vast number of Blocs users whom wish to avoid code at all costs it seems. So from a setup and deployment standpoint probably not a feasible option in regards to most Blocs users due to that. Even something like Solr would likewise fit in this category.
Honestly a simple AJAX / JS / JSON Search, might be the best option for Blocs.
Here is a simple example of AJAX Live Search with simple PHP that searches an XML file. Which could perhaps be modified to work with Blocs sitemap file. However from what I see most people don’t name there Blocs pages or titles specific enough for that to work correctly. So a more realistic approach for this simple method might be creating an additional xml file from each pages stripped out relative data for the purpose of search when a site is exported. However that might cause unwanted duplicate content concerns for crawlers. But something certainly seems possible concerning this simple approach. You can find other examples like this as well.
Further along these same lines you can look at complete frameworks such as, Tipuesearch.js , Lunr.js , Elasticlunr.js , Etc., which all offer robust site search capabilities and options.
From the AJAX / JS / JSON , Etc., standpoint you would be free to allow full customization of styling as you desire, remain onsite, etc.
So perhaps this is the simplest and easiest approach for Blocs and a “Site Search Bric” for Blocs Users.