Summary:
This document summarizes the various content types and their fields that indexed by the CPiX engine.

Note: 
1. By default, all EIndexTokenized fields are aggregated, unless explicitly chosen to ENoAggregate.
2. By default, the contents of all EIndexTokenized fields that are aggregated are meant to be added to the Excerpt field. 
3. Any fields starting with an underscore (_) are designated as system fields and by default are neither aggregated nor added to excerpt field.
4. The order of fields in the excerpt field is the order in which they appear below. The order has been chosen based on the 'Details/Edit' view of the corresponding application.

Legend for excerpt field:
ExcerptYes: the field has been chosen to be part of the excerpt field.
ExcerptNo : the field has been explicity opted out of the excerpt field (even though it is EIndexTokenized).
ExcerptNA : the field is not EIndexTokenized, and hence will not be applicable to be added to the excerpt field.

Indexed content types:
----------------------
  root
    | [ _docuid      ]        {EStoreYes | EIndexUnTokenized}
    | [ _appclass    ]        {EStoreYes | EIndexTokenized}    
    | [ _appclass_ut ]        {EStoreNo  | EIndexUnTokenized}
    | [ _aggregate   ]        {EStoreNo  | EIndexUnTokenized}     
    | [ _excerpt     ]        {EStoreYes | EIndexNo}
    | [ _mimetype (opt) ]     {EStoreYes | EIndexNo}
    |
    +-- msg
    | [ To         ]    {EStoreYes | EIndexTokenized} {ExcerptYes, if present}
    | [ From       ]    {EStoreYes | EIndexTokenized} {ExcerptYes, if present}
    | [ Body       ]    {EStoreYes | EIndexTokenized} {ExcerptYes}
    | [ Folder     ]    {EStoreYes | EIndexNo}        {ExcerptNA}
    | [ Subject    ]    {EStoreYes | EIndexTokenized} {ExcperptNo}
    |
    |
    +-- file
    |     |
    |     |
    |     +-- content
    |            | [ Contents  ]     {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |            | [ Name      ]     {EStoreYes | EIndexTokenized}   {ExcerptNo}
    |            | [ BaseName  ]     {EStoreNo  | EIndexTokenized}   {ExcerptNo}
    |            | [ Extension ]     {EStoreNo  | EIndexTokenized}      {ExcerptNo}
    |            |
    |            +-- folder
    |              [ Name      ]     {EStoreYes | EIndexTokenized}      {ExcerptNo}
    |              [ Extension ]     {EStoreYes | EIndexUnTokenized}    {ExcerptNA}
    |
    |      
    +-- media
    |     | 
    |     |
    |     +-- audio
    |     | [ Name           ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ MediaId        ]    {EStoreYes | EIndexUnTokenized} {ExcerptNo}
    |     | [ Title          ]    {EStoreYes | EIndexTokenized}   {ExcerptNo}
    |     | [ ItemType       ]    {EStoreYes | EIndexUnTokenized} {ExcerptNo} 
    |     | [ Extension      ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ Album          ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ AlbumArtist    ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ OriginalArtist ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ Composer       ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ Artist         ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | 
    |     |
    |     +-- image
    |     | [ Name           ]    {EStoreYes | EIndexTokenized}   {ExcerptNo}
    |     | [ MediaId        ]    {EStoreYes | EIndexUnTokenized} {ExcerptNA}
    |     | [ Title          ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ ItemType       ]    {EStoreYes | EIndexUnTokenized} {ExcerptNA}
    |     | [ Extension      ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ Comment        ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |     | [ DateTimeOrignal]    {EStoreYes | EIndexUnTokenized} {ExcerptNA}
    |     |
    |     |    
    |     +-- video
    |       [ Name           ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |       [ MediaId        ]    {EStoreYes | EIndexUnTokenized} {ExcerptNo}
    |       [ Title          ]    {EStoreYes | EIndexTokenized}   {ExcerptNo}
    |       [ ItemType       ]    {EStoreYes | EIndexUnTokenized} {ExcerptYes}
    |       [ Extension      ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |       [ Artist         ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |       [ Author         ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |       [ Copyright      ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |       [ Description    ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |       [ Comment        ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |
    |
    +-- contact
	/* The order of fields in excerpt is as below. The order in this case
	 * is the order of fields shown when you 'Edit' the contact.
	 */
    | [ GivenName           ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo}
    | [ FamilyName          ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo}
    | [ PhoneNumber         ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
	| [ EMail               ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
	| [ SIPID               ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
	| [ CompanyName         ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ JobTitle            ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ Note                ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
	/* The following fields are not displayed when 'Edit'-ing the contact.
	 * The order here is arbitrary.
	 */
    | [ Address             ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ SecondName          ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ Suffix              ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ URL                 ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ PostOffice          ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ ExtendedAddress     ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Locality            ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Region              ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ PostCode            ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Country             ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Spouse              ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ Children            ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ Class               ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Prefix              ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ AdditionalName      ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ Fax                 ]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Assistant  			]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ Department		    ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes}
    | [ IMAddress    		]    {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ ServiceProvider     ]	 {EStoreYes | EIndexTokenized}   				{ExcerptYes}
    | [ Birthday			]    {EStoreYes | EIndexTokenized}   				{ExcerptNo}
    | [ Anniversary			]    {EStoreYes | EIndexTokenized}   				{ExcerptNo} 
    |
    |
    +-- calendar
    | [ Summary         ]    {EStoreYes | EIndexTokenized}   {ExcerptNo}
    | [ Description     ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    | [ Location        ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    | [ StartTime       ] (YYYY MM DD HHSS) (TimeZone UTC)   {EStoreYes | EIndexUnTokenized}   {ExcerptNA}
    | [ EndTime         ] (YYYY MM DD HHSS) (TimeZone UTC)   {EStoreYes | EIndexUnTokenized}   {ExcerptNA}
    | 
    |    
    +-- bookmark
    | [ Name       ]    {EStoreYes | EIndexTokenized}   {ExcerptNo}
    | [ Url        ]    {EStoreYes | EIndexTokenized}   {ExcerptYes}
    |
    |
    +-- applications
    | [ Name       ]    {EStoreYes | EIndexTokenized}                     {ExcerptNo}
    | [ Uid        ]    {EStoreYes | EIndexTokenized | ENoAggregate}      {ExcerptNo}
    | [ Path       ]    {EStoreYes | EIndexTokenized}                     {ExcerptNo}
    |
    |
    +-- notes
    | [ Date       ]  (YYYY MM DD HHSS) {EStoreYes | EIndexUnTokenized}   {ExcerptNA}
    | [ Memo       ]                    {EStoreYes | EIndexTokenized}     {ExcerptNo}


For instance, a document for an email message should have the
appclass value defined as "root msg email" (with spaces in between the
words). SMS message would have it as "root msg phone sms".

If SMS, MMS and email messages originated from the same messenger
application and are indexed to the same indexed database, then the
appclass value given to the IdxDb retrieval call would be the common
denominator, which is "root msg", as well as the baseAppClass value
for creating the index would be the same, "root msg".

The field names are also put under the corresponding app classes. Some
field names are for system use, so they are defined on the root class,
prefixed with underscore to avoid name clashes. Application specific
harvesters should use names without underscore prefixes.

The exact hierarchy will undergo some obvious evolution, its structure
and the field names are up to the harvesters. However, the
preinstalled application suites should define a neatly structured
hieararchy facilitating flexible and sensible search narrowing and
widening.

NOTE: Later cpix library versions provide the feuture of searching any
field, one just have to use cpix_DEFAULT_FIELd field name (when
creating the cpix_QueryParser instance).

