The store locator data is stored in the location repository, /atg/commerce/locations/LocationRepository
. The indexing process is configured through the /atg/commerce/search/StoreLocationOutputConfig
component and other related components. These components are configured to create Endeca data, dimension value, and schema records, which are submitted to Oracle Endeca Commerce for indexing.
The XML definition file of the StoreLocationOutputConfig
component in Commerce Reference Store looks like this:
<item item-descriptor-name="location" is-document="true"> <title property-name="locationId"/> <properties> <property name="$docId" type="string" output-name="record.spec"/> <property name="$repositoryId" type="string" output-name="store.repositoryId" filter="unique"/> <property name="store.type" is-dimension="true" default-value="store" type="string" property-accessor="null" is-non-repository-property="true"/> <property name="name" type="string" output-name="store.name"/> <property name="city" is-dimension="true" type="string" output-name="store.city"/> <property name="stateAddress" is-dimension="true" type="string" output-name="store.state" text-searchable="true"/> <property name="geocode" type="geocode" output-name="store.geocode"/> </properties> <item property-name="sites"> <properties> <property name="id" is-dimension="true" type="string" output-name="store.siteId"/> <property name="$itemDescriptor.itemDescriptorName" suppress="true"/> <property name="$repository.repositoryName" suppress="true"/> <property name="$repositoryId" suppress="true"/> </properties> </item> </item>
The store.city
, store.state
, store.type
, and store.siteId
output properties are specified as Endeca dimensions, so they can be used for filtering in the store locator. In addition, the store.geocode
output property, while not actually a dimension, is used in the store locator to enable selection of stores based on distance from the customer.
In addition to the StoreLocationOutputConfig
, the indexing components associated with the location repository include:
/atg/commerce/endeca/index/StoreSchemaExporter
– A component of classatg.endeca.index.schema.SchemaExporter
that creates the schema records for the location repository and submits them to the schema record store./atg/commerce/endeca/index/StoreLocationDimensionExporter
-- A component of classatg.endeca.index.dimension.RepositoryTypeHierarchyExporter
that specifies how to create the Endeca dimension value records and submit them to the dimension value record store.
Commerce Reference Store also configures the /atg/commerce/endeca/index/ProductCatalogSimpleIndexingAdmin
component to invoke these components when an indexing job is triggered, along with the components for indexing the product catalog. See the ATG-Endeca Integration Guide for more information about the indexing classes and components.
The following example shows a record generated for a store in the location repository:
<RECORD> <PROP NAME="record.spec"> <PVAL> store-CRSStore-Encino104 </PVAL> </PROP> <PROP NAME="store.repositoryId"> <PVAL> CRSStore-Encino104 </PVAL> </PROP> <PROP NAME="store.type"> <PVAL> store </PVAL> </PROP> <PROP NAME="store.name"> <PVAL> CRS Store - Encino #104 </PVAL> </PROP> <PROP NAME="store.city"> <PVAL> Encino </PVAL> </PROP> <PROP NAME="store.state"> <PVAL> CA </PVAL> </PROP> <PROP NAME="store.geocode"> <PVAL> 34.1548005,-118.4765695 </PVAL> </PROP> <PROP NAME="url"> <PVAL> atgrep:/LocationRepository/store/CRSStore-Encino104 </PVAL> </PROP> <PROP NAME="baseUrl"> <PVAL> atgrep:/LocationRepository/store/CRSStore-Encino104 </PVAL> </PROP> <PROP NAME="repositoryName"> <PVAL> LocationRepository </PVAL> </PROP> <PROP NAME="type"> <PVAL> store </PVAL> </PROP> <PROP NAME="store.siteId"> <PVAL> storeSiteUS </PVAL> </PROP> </RECORD>