Class IndexerComponent

java.lang.Object
org.springframework.extensions.surf.util.AbstractLifecycleBean
org.alfresco.repo.search.IndexerComponent
All Implemented Interfaces:
EventListener, Indexer, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationListener

public class IndexerComponent extends org.springframework.extensions.surf.util.AbstractLifecycleBean implements Indexer
Component API for indexing. Delegates to the real index retrieved from the indexerAndSearcherFactory Transactional support is free.
Author:
andyh
See Also:
  • Constructor Details

    • IndexerComponent

      public IndexerComponent()
  • Method Details

    • setStoreRedirectorProxyFactory

      public void setStoreRedirectorProxyFactory(StoreRedirectorProxyFactory<IndexerAndSearcher> storeRedirectorProxyFactory)
    • onBootstrap

      protected void onBootstrap(org.springframework.context.ApplicationEvent event)
      Specified by:
      onBootstrap in class org.springframework.extensions.surf.util.AbstractLifecycleBean
    • onShutdown

      protected void onShutdown(org.springframework.context.ApplicationEvent event)
      Specified by:
      onShutdown in class org.springframework.extensions.surf.util.AbstractLifecycleBean
    • setIndexerAndSearcherFactory

      public void setIndexerAndSearcherFactory(IndexerAndSearcher indexerAndSearcherFactory)
    • setReadThrough

      public void setReadThrough(boolean isReadThrough)
      Description copied from interface: Indexer
      Activates 'read through' behaviour for this indexer. Rather than accessing the database through the current (potentially old) transaction, it will use a discrete read only transaction for each node it indexes. This avoids 'stale' nodes building up in the caches during long reindex runs.
      Specified by:
      setReadThrough in interface Indexer
      Parameters:
      isReadThrough - boolean
    • createNode

      public void createNode(ChildAssociationRef relationshipRef)
      Description copied from interface: Indexer
      Create an index entry when a new node is created. A node is always created with a name in a given parent and so a relationship ref is required.
      Specified by:
      createNode in interface Indexer
      Parameters:
      relationshipRef - ChildAssociationRef
    • updateNode

      public void updateNode(NodeRef nodeRef)
      Description copied from interface: Indexer
      Update an index entry due to property changes on a node. There are no strucural impications from such a change.
      Specified by:
      updateNode in interface Indexer
      Parameters:
      nodeRef - NodeRef
    • deleteNode

      public void deleteNode(ChildAssociationRef relationshipRef)
      Description copied from interface: Indexer
      Delete a node entry from an index. This implies structural change. The node will be deleted from the index. This will also remove any remaining refernces to the node from the index. The index has no idea of the primary link.
      Specified by:
      deleteNode in interface Indexer
      Parameters:
      relationshipRef - ChildAssociationRef
    • createChildRelationship

      public void createChildRelationship(ChildAssociationRef relationshipRef)
      Description copied from interface: Indexer
      Create a refernce link between a parent and child. Implies only (potential) structural changes
      Specified by:
      createChildRelationship in interface Indexer
      Parameters:
      relationshipRef - ChildAssociationRef
    • updateChildRelationship

      public void updateChildRelationship(ChildAssociationRef relationshipBeforeRef, ChildAssociationRef relationshipAfterRef)
      Description copied from interface: Indexer
      Alter the relationship between parent and child nodes in the index. This can be used for:
      1. rename,
      2. move,
      3. move and rename,
      4. replace
      This could be implemented as a delete and add but some implementations may be able to optimise this operation.
      Specified by:
      updateChildRelationship in interface Indexer
      Parameters:
      relationshipBeforeRef - ChildAssociationRef
      relationshipAfterRef - ChildAssociationRef
    • deleteChildRelationship

      public void deleteChildRelationship(ChildAssociationRef relationshipRef)
      Description copied from interface: Indexer
      Delete a relationship between a parent and child. This will remove a structural route through the index. The index has no idea of reference and primary relationships and will happily remove the primary relationship before refernces which could remain. Use delete to ensure all strctural references are removed or call this sure you are doing an unlink (remove a hard link in the unix file system world).
      Specified by:
      deleteChildRelationship in interface Indexer
      Parameters:
      relationshipRef - ChildAssociationRef
    • detectNodeChanges

      public void detectNodeChanges(NodeRef nodeRef, SearchService searcher, Collection<ChildAssociationRef> addedParents, Collection<ChildAssociationRef> deletedParents, Collection<ChildAssociationRef> createdNodes, Collection<NodeRef> updatedNodes)
      Description copied from interface: Indexer
      Does a database vs index comparison for the given created/updated/renamed/referenced nodeRef in order to determine the set of indexing operations required
      Specified by:
      detectNodeChanges in interface Indexer
      Parameters:
      nodeRef - the nodeRef to process
      searcher - searcher to query the indexes
      addedParents - set to add new secondary parent associations to
      deletedParents - set to add removed secondary parent associations to
      createdNodes - set to add created nodes to
      updatedNodes - set to add updated nodes to
    • deleteIndex

      public void deleteIndex(StoreRef storeRef)
      Description copied from interface: Indexer
      Delete the index for a store
      Specified by:
      deleteIndex in interface Indexer
      Parameters:
      storeRef - StoreRef
    • flushPending

      public void flushPending()
      Specified by:
      flushPending in interface Indexer