Hello, Colleagues.
I want to discuss one frequent usecase: inventory updates.
Let's say we can't reindex docs when inventory numbers updated. We can put
inventory in separate index, and apply fq={!join ..
fromIndex=inventory}left:(0 TO *]. Once it's cached in main index filter
cache it gets a good response time. We can even shard main collection, but
keep inventory single shard. Ok.
The sad moment occurs when commit goes into inventory core, after searcher
is refreshed it's going to be cache misses on those inventory queries, and
many of them go into new inventory searcher. That's not good. I can think
of two workarounds:
- relax {!join} equality regarding fromIndex timestamp, so for some time
it will be outdated inventory, but it's ok. And then we need to somehow,
evict, invalidate, regenerate inventory filter
- newSearcher listener in inventory core can introspect main core cache
entries find {!join .. fromIndex=inventory}... regenerate and insert
results.
I'm afraid to think about queryResult cache.
Is it worth to have something like this in Solr distro?
--
Sincerely yours
Mikhail Khludnev