The top-level node in the XML definition file defines the starting point for retrieving items to index. You can limit the set of items to index by adding an optional repository-item-group attribute to specify the Nucleus location of a component whose class implements the atg.repository.RepositoryItemGroup interface. A class that implements this interface defines a logical grouping of repository items.

For example:

<item item-descriptor-name="product"
   repository-path="/atg/commerce/catalog/ProductCatalog"
   repository-item-group="/atg/commerce/search/IndexedItemsGroup"
   is-document="true">

Some commerce sites display search results only for items that can also be viewed by browsing the catalog hierarchy. In order to be displayed in the catalog tree, a product must have an associated category.

If you want to exclude uncategorized products from indexing, you can specify a repository item group, such as /atg/commerce/search/IndexedItemsGroup, that represents the location of items that are properly categorized within your site. If a repository-item-group attribute is not specified, uncategorized products will be indexed.

IndexedItemsGroup specifies rules for both standard and custom catalogs, depending on which modules are started. This is the rule for standard catalogs:

<!-- products whose "ancestorCategories" property includes an item whose "root"
     property is true. -->
<ruleset>
  <accepts>
     <rule op="includesItem">
       <valueof target="ancestorCategories">
       <rule op=eq>
         <valueof target="root">
         <valueof constant="true">
       </rule>
     </rule>
   </accepts>
</ruleset>

This is the rule for custom catalogs (which overrides the standard catalog rule if you run the DCS.Search.CustomCatalogs module):

<!-- products whose "catalogs" property is not null. -->
<ruleset>
   <accepts>
     <rule op=isNotNull>
       <valueof target="catalogs">
     </rule>
   </accepts>
</ruleset>
 
loading table of contents...