An indexing definition file begins with a top-level item
element that specifies the item descriptor to use, and then lists the properties of that item type to include. The properties appear as property
elements within text-properties
or meta-properties
elements. The values of properties included in text-properties
elements are indexed as searchable text, while the values of properties included in meta-properties
elements can be used in constraints or facets.
For example, in a product catalog, you’d typically want a property containing a product description to be searchable, but you’d typically want a price
property to be usable as a constraint (e.g., to constrain the results to include only those products whose price is less than $100). If you want a property to be both searchable and usable as a constraint, it must appear within both the text-properties
and meta-properties
elements. For example, you might use a manufacturer
property this way, enabling searching for a specific manufacturer, or constraining the results to exclude items from a certain manufacturer.
The top-level item
element in the definition file can contain child item
elements for properties that refer to other repository items (or arrays, Collections, or Maps of repository items). Those child item
elements in turn can contain property
and item
elements themselves.
For example, the following definition file enables indexing of users and their home addresses:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE item PUBLIC "-//Art Technology Group, Inc.//DTD Repository Ouput Specifier 1.0//EN" "http://www.atg.com/dtds/search/indexing-dependency- schema.dtd"> <item item-descriptor-name="user" is-document="true"> <title property-name="lastName"/> <meta-properties> <property name="dateOfBirth" type="date"/> </meta-properties> <text-properties> <property name="firstName"/> <property name="lastName"/> </text-properties> <item property-name="homeAddress"> <text-properties> <property name="address1"/> <property name="address2"/> <property name="city"/> <property name="state"/> <property name="postalCode"/> <property name="phoneNumber"/> </text-properties> </item> </item>
Note that in the above example, the top-level item
element has the is-document
attribute set to true
. This attribute specifies that an XHTML document should be generated for each item of that type (in this case, each user
item). If, instead, you want to generate a separate XHTML document per homeAddress
item, you set is-document
to true
for the homeAddress
item type and not for the user
item type. In that case, the parent properties (firstName
and lastName
in the above example) are repeated in each XHTML document.