By default, for the repository item type designated by the is-document attribute, the IndexingOutputConfig component generates one XHTML document per item. In some cases, though, you may want to generate more than one document for each repository item. For example, suppose you have a repository whose text properties are stored in both French and English, and the language displayed is determined by the user’s locale setting. In this case you will typically want to create two documents from each repository item, one with the text content in French, and the other one in English.

To handle situations like this, the ATG platform provides an interface named atg.repository.search.indexing.VariantProducer. You can write your own implementations of the VariantProducer interface, or you can use implementations included with the ATG platform. This interface defines a single method, prepareNextVariant(), for determining the number and type of variants to produce. Depending on how your repository is organized, implementations of this method can use a variety of approaches for determining how to generate variant documents. For example, the atg.repository.search.indexing.producer.LocaleVariantProducer class generates a variant for each locale specified in its locales array property.

You specify the VariantProducer components to use by setting the variantProducers property of the IndexingOutputConfig component. Note that this property is an array; you can specify any number of VariantProducer components, and the IndexingOutputConfig will generate a separate variant for each possible combination of values of the variant criteria. For example, suppose you use LocaleVariantProducer and you specify two locales, French and English. If you add a second VariantProducer that creates three variants (1, 2, and 3), the total number of variants generated for each repository item would be six (French 1, English 1, French 2, English 2, French 3, and English 3).

 
loading table of contents...