I have a fairly simple need to do a conditional update in Solr, which is easily accomplished in MySQL.
For example,
<id>
<id>
s, in which case Solr would update the existing records with the same <id>
s<dateCreated>
and I would like to only update a <doc>
if the new <dateCreated>
is greated than the old <dateCreated>
(this applies to duplicate <id>
s only, of course)How would I be able to accomplish such a thing?
The context is trying to combat race conditions resulting in multiple adds for the same ID but executing in the wrong order.
Thanks.
As of solr 4.0, optimistic concurrency is enabled via the _version_
field.
http://yonik.com/solr/optimistic-concurrency/
To enable, you need to make sure your schema.xml contains
<field name="_version_" type="long" indexed="true" stored="true"/>
and in solrconfig.xml
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog>
<str name="dir">${solr.data.dir:}</str>
</updateLog>
</updateHandler>
I can think of two ways:
UpdateHandler
and override addDoc
to implement that checking.Remember that Solr is not a database, comparing it to MySQL is comparing apples and oranges.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With