The order and profile search configuration is comprised of the following:

Indexing Methods

Order and profile search support both incremental and bulk indexing. Incremental indexing occurs in real time, and as such, does not require an index deployment.

Profiles and orders require separate Search projects. This allows both profiles and orders to be indexed concurrently as indexing jobs from separate search environments can be run in parallel.

Note: You cannot search for incomplete orders. Incomplete orders, or orders that have yet to be submitted, are not indexed, and as such, are not contained within the search index.

Order and Profile Search Components

The following components from DAF.Search.Index are used for order and profile searches. For additional information on these components, refer to the ATG Search Installation and Configuration Guide.

  • /atg/search/repository/IncrementalItemQueue

  • /atg/search/repository/IncrementalItemQueueRepository

  • /atg/search/repository/ConfigStatePersister

  • /atg/search/repository/ConfigAndRepositoryPersister

  • /atg/search/repository/IncrementalLoaderDPS.Search.Index appends the ProfileOutputConfig to the monitoredOutputConfig property. DCS.Search.Order.Index appends the OrderOutputConfig to the monitoredOutputConfig property. When the IndexingPeriodicService runs, the IncrementalLoader will process queued indexing requests for each of the /atg/userprofiling/search/ProfileOutputConfig or the /atg/commerce/search/OrderOutputConfig components.

    Set the /atg/search/repository/IncrementalLoader/
    recordIncompleteOrderEvents
    to false to enable filtering of incomplete orders.

  • /atg/search/repository/BulkLoader

  • /atg/search/repository/IndexingPeriodicService – Configured in DPS.Search.Index to run every two seconds by default. All servers are configured with the IndexingPeriodicService enabled but they only index any /atg/userprofiling/search/ProfileOutputConfig or /atg/commerce/search/OrderOutputConfig component that has the component enableIncrementalLoading=true and incrementalUpdateSeconds > 0. As such, you should only set the incrementalUpdateSeconds > 0 on servers that will be used for indexing.

    The OrderOutputConfig.incrementalUpdateSeconds is set to 30 by default to ensure that at least one server will process the queued incremental indexing requests. In a production environment, it is best to set incrementalUpdateSeconds=-1 on the agent-facing server and configure incrementalUpdateSeconds > 0 on the management server. Incremental indexing can be enabled on any background server that is running DPS.Search.Index, and DCS.Search.Order.Index for servers.

    The IndexingPeriodicService clears any expired configuration claim locks each time it runs using the checkExpiredConfigurationClaimsIntervalSeconds property, which checks for expired configuration claim locks every n seconds. Each time the IndexingPeriodicService runs, it checks to see if the time elapsed has exceeded this interval.

The following components are also used in the order and profile search process:

Component

Description

/atg/userprofiling/search/
ProfileOutputConfig

The profile Indexing Output Component. Defined in the DPS.Search.Index module so that an indexing request can be queued wherever a profile is added or updated. The component creates the profile-output-config.xml definition file.

/atg/commerce/search/
OrderOutputConfig

The order Indexing Output Component. Defined in the DCS.Search.Order.Index module so that an order indexing request can be queued wherever an order is added or updated. The component creates the order-output-config.xml definition file.

/atg/search/repository/
LiveDocumentSubmitter

A special document submitter that updates the index in near real time. This component is defined in the DAF.Search.Index module.

/atg/commerce/search/
OrderProfileIdPropertyAccessor

Uses the atg.repository.search.indexing.
accessor.ItemIdPropertyAccessor
class that retrieves properties from an item where the item is referenced by ID. In this case, the order item references the user item by Profile ID.

/atg/userprofiling/search/
AddressPropertyAccessor

Uses the atg.repository.search.indexing.
accessor.ConcatenatePropetyAccessor
class to concatenate address1, address2 and address3 into a single indexed address meta property.

/atg/search/repository/
AlphaNumericPropertyAccessor

Removes non-alpha-numeric characters from the indexed meta property. Used to strip white space and punctuation from phoneNumber to promote better search consistency.

/atg/search/routing/respository/SearchConfigurationRepository

The shardConfig and shard properties store configuration information on how to shard your search environment, where to store the logical partitions and what information is stored in each shard.