Class AtomicUpdateDocumentMerger

java.lang.Object
org.apache.solr.update.processor.AtomicUpdateDocumentMerger

public class AtomicUpdateDocumentMerger extends Object
WARNING: This API is experimental and might change in incompatible ways in the next release.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final SchemaField
     
    protected final IndexSchema
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static Set<String>
    Given an add update command, compute a list of fields that can be updated in-place.
    protected void
    doAdd(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
     
    protected void
    doAddDistinct(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
     
    protected void
    doInc(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
     
    boolean
    Given an AddUpdateCommand containing update operations (e.g.
    protected void
    doRemove(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
     
    protected void
    doRemoveRegex(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object valuePatterns)
     
    protected void
    doSet(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
     
    static boolean
    Utility method that examines the SolrInputDocument in an AddUpdateCommand and returns true if the documents contains atomic update instructions.
    static boolean
    isDerivedFromDoc(org.apache.solr.common.SolrInputDocument fullDoc, org.apache.solr.common.SolrInputDocument partialDoc)
     
    static boolean
    Given a schema field, return whether or not such a field is supported for an in-place update.
    org.apache.solr.common.SolrInputDocument
    merge(org.apache.solr.common.SolrInputDocument sdoc, org.apache.solr.common.SolrInputDocument toDoc)
    Merges the fromDoc into the toDoc using the atomic update syntax.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • AtomicUpdateDocumentMerger

      public AtomicUpdateDocumentMerger(SolrQueryRequest queryReq)
  • Method Details

    • isAtomicUpdate

      public static boolean isAtomicUpdate(AddUpdateCommand cmd)
      Utility method that examines the SolrInputDocument in an AddUpdateCommand and returns true if the documents contains atomic update instructions.
    • merge

      public org.apache.solr.common.SolrInputDocument merge(org.apache.solr.common.SolrInputDocument sdoc, org.apache.solr.common.SolrInputDocument toDoc)
      Merges the fromDoc into the toDoc using the atomic update syntax. This method will look for a nested document (possibly toDoc itself) with an equal ID, and merge into that one.
      Parameters:
      sdoc - the doc containing update instructions
      toDoc - the target doc (possibly nested) before the update (will be modified in-place)
      Returns:
      toDoc with modifications; never null
    • isSupportedFieldForInPlaceUpdate

      public static boolean isSupportedFieldForInPlaceUpdate(SchemaField schemaField)
      Given a schema field, return whether or not such a field is supported for an in-place update. Note: If an update command has updates to only supported fields (and _version_ is also supported), only then is such an update command executed as an in-place update.
    • computeInPlaceUpdatableFields

      public static Set<String> computeInPlaceUpdatableFields(AddUpdateCommand cmd) throws IOException
      Given an add update command, compute a list of fields that can be updated in-place. If there is even a single field in the update that cannot be updated in-place, the entire update cannot be executed in-place (and empty set will be returned in that case).
      Returns:
      Return a set of fields that can be in-place updated.
      Throws:
      IOException
    • isDerivedFromDoc

      public static boolean isDerivedFromDoc(org.apache.solr.common.SolrInputDocument fullDoc, org.apache.solr.common.SolrInputDocument partialDoc)
      Parameters:
      fullDoc - the full doc to be compared against
      partialDoc - the sub document to be tested
      Returns:
      whether partialDoc is derived from fullDoc
    • doInPlaceUpdateMerge

      public boolean doInPlaceUpdateMerge(AddUpdateCommand cmd, Set<String> updatedFields) throws IOException
      Given an AddUpdateCommand containing update operations (e.g. set, inc), merge and resolve the operations into a partial document that can be used for indexing the in-place updates. The AddUpdateCommand is modified to contain the partial document (instead of the original document which contained the update operations) and also the prevVersion that this in-place update depends on. Note: updatedFields passed into the method can be changed, i.e. the version field can be added to the set.
      Returns:
      If in-place update cannot succeed, e.g. if the old document is deleted recently, then false is returned. A false return indicates that this update can be re-tried as a full atomic update. Returns true if the in-place update succeeds.
      Throws:
      IOException
    • doSet

      protected void doSet(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
    • doAdd

      protected void doAdd(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
    • doAddDistinct

      protected void doAddDistinct(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
    • doInc

      protected void doInc(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
    • doRemove

      protected void doRemove(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object fieldVal)
    • doRemoveRegex

      protected void doRemoveRegex(org.apache.solr.common.SolrInputDocument toDoc, org.apache.solr.common.SolrInputField sif, Object valuePatterns)