sqlite has some search capabilities. i think those require having matching words in searches though.
there is also something like wrapping bert.cpp to make neural fingerprints, combine it with some kind of nearest neighbor thing like annoy or hsnw and you can make a neat little neural search engine that way as well. those are nice at finding stuff with inexact matches.