Maybe interesting to someone here https://clojurians.slack.com/archives/C01RD3AF336/p1717075380749379
I'm not sure. I still only grasp a very tiny bit of Datalevin's search engine. My goal was/is to use Datalevin's search feature from an in-memory setup. So the persistency I am looking for can be covered by just an atom. I believe Datalevin uses https://github.com/juji-io/datalevin/blob/master/src/datalevin/search.clj#L291 for performance reasons like caching, if that's what you mean. Also Datalevin is not an immutable database https://github.com/juji-io/datalevin?tab=readme-ov-file#floppy_disk-differences-from-datascript so maybe that explains it.
Sorry, yes that is what I mean with persistent. I distinguish it from durability. Using immutability is a bit confusing, because Datahike is not immutable really, but rather persistent in this sense. It is a matter of definitions. So if the index data structures can be made persistent in that "immutable" sense it would work also for Datahike and DataScript when used with this persistent Clojure memory model.
Nice! I have thinking about adding fulltext search as well for Datahike, but all search indices that I am aware of are mutable and not persistent. What is your take on this?