Hi!

I'm working on building a NRT solr instance. The schema is designed so
documents can be partially updated. Some documents will need to
receive or lose filter tags in a multi-valued field.

I have to be able to query already existing documents to add tags to
them or remove tags from them. Obviously if I (soft-)commit after each
document is added or removed the serializable consistency would
guarantee that I can see all documents that I might want to change.
However this is not desirable in terms of performance.

I've come up with a potential solution: If I can track document
updates that I make and only call commit before I would query
documents that have been changed recently, the performance is not
sacrificed and I will get the strict consistency where I need it. For
this to work reliably the soft-auto-commit interval and the times
specified through commit-within must strictly comply with the config
and the requests.

I have auto-commit interval of 60 seconds with open-searcher false and
auto-soft-commit interval of 15 seconds. Documents will be submitted
through the REST API where some of them will also have commit-within
2-3 seconds specified.

My questions:
 - After a document indexing request has returned with success, what
level of guarantee do I have that the document will be available after
the configured soft-commit-interval?
 - After a document indexing request with commit-within has returned
with success, what level of guarantee do I have that the document will
be available after the requested commit timeout?
 - Alternatively if I could query solr when the last soft-commit was
done I could ensure to call a soft-commit myself. Is there an API to
see when or how long ago was the last (soft-)commit?

I'm primarily interested in answers regards to solr in standalone mode.

Thanks,
Nandor

Reply via email to