For search on static sites, I quite like lunrjs to provide a fast, good enough, client-side-only search experience. I came for the feature set and stayed for the tagline... "Lunr: A bit like Solr, but smaller and not as bright."
Another neat trick is to create an FTS search index in SQLite, and have the client query it with sql.js-httpvfs [1]. Works with github pages just fine [2]... Your web server must respect HTTP range requests.
[2] With the caveat that you have to commit your database index (lunr's json, or sqlite's db file) to source, because gh pages does not support serving objects managed by git LFS.
My favorite feature in blogs is that they load fast, are readable, and work well without JavaScript.
This should be the baseline but sadly, in 2024, a lot of writers shoot themselves in the foot by having slow, overly complicated sites that get in the way of the content.
Same pet peeve... "Why is your blog a Javascript application?". Far too many sites won't even render text content if JS is disabled by default, which it is, in my browser.
Another neat trick is to create an FTS search index in SQLite, and have the client query it with sql.js-httpvfs [1]. Works with github pages just fine [2]... Your web server must respect HTTP range requests.
[1] https://github.com/phiresky/sql.js-httpvfs
[2] With the caveat that you have to commit your database index (lunr's json, or sqlite's db file) to source, because gh pages does not support serving objects managed by git LFS.