Solr conditional adds/updates?

前端 未结 3 1042
灰色年华
灰色年华 2021-01-19 22:48

I have a fairly simple need to do a conditional update in Solr, which is easily accomplished in MySQL.

For example,

  • I have 100 documents with a unique
相关标签:
3条回答
  • 2021-01-19 23:31

    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>
    
    0 讨论(0)
  • 2021-01-19 23:36

    With really custom addition logic like this, I find that writing your own client side updater works better. It keeps you from mucking around in Solr internals, which makes it easier to update in the future. You can definitly do this in SolrJ, but if you aren't a Java dev, there is probably a clientside library in your own preferred language... PHP, Python, Ruby, C# etc...

    The rsolr Ruby gem (http://github.com/mwmitchell/rsolr/tree/master) makes it VERY easy to hack together a custom load script.

    0 讨论(0)
  • 2021-01-19 23:44

    I can think of two ways:

    1. Write your own UpdateHandler and override addDoc to implement that checking.
    2. Put the appropriate locks (critical sections) in your client code in order to fetch the stored document, compare the dates, and conditionally add the new document in a thread-safe manner.

    Remember that Solr is not a database, comparing it to MySQL is comparing apples and oranges.

    0 讨论(0)
提交回复
热议问题