public static function setIndexesXML($manageClient) { parent::$logger->debug('setIndexes'); $db = new MLPHP\Database($manageClient, 'mlphp-test-db'); // Set range attribute indexes parent::$logger->debug('Add Range Attribute Index: type'); $type = array('scalar-type' => 'string', 'parent-localname' => 'bill', 'localname' => 'type'); $db->addRangeAttributeIndex($type); parent::$logger->debug('Add Range Attribute Index: number'); $number = array('scalar-type' => 'int', 'parent-localname' => 'bill', 'localname' => 'number'); $db->addRangeAttributeIndex($number); // Set path range index parent::$logger->debug('Add Range Attribute Index: date'); $date = array('scalar-type' => 'string', 'path-expression' => 'introduced/@date'); $db->addRangePathIndex($date); // Set range element indexes parent::$logger->debug('Add Range Element Index: status'); $status = array('scalar-type' => 'string', 'localname' => 'status'); $db->addRangeElementIndex($status); parent::$logger->debug('Add Range Element Index: subject'); $subject = array('scalar-type' => 'string', 'localname' => 'subject'); $db->addRangeElementIndex($subject); parent::$logger->debug('Add Range Element Index: title'); $title = array('scalar-type' => 'string', 'localname' => 'title'); $db->addRangeElementIndex($title); // Fields parent::$logger->debug('Add Field Range Indexes'); $fieldPath = new MLPHP\FieldPath(array('path' => 'meta', 'weight' => 1.5)); $included = new MLPHP\FieldElementIncluded(array('localname' => 'number', 'weight' => 1.7)); $excluded1 = new MLPHP\FieldElementExcluded(array('localname' => 'session')); $excluded2 = new MLPHP\FieldElementExcluded(array('localname' => 'abbrev')); // Field Range Index: type, number $field1 = new MLPHP\Field(array('field-name' => 'field1', 'field-path' => $fieldPath, 'excluded-element' => array($excluded1, $excluded2))); $db->addField($field1); $db->addRangeFieldIndex(array('field-name' => 'field1')); // Field Range Index: session/number, type, number $field2 = new MLPHP\Field(array('field-name' => 'field2', 'field-path' => $fieldPath, 'included-element' => $included, 'excluded-element' => array($excluded1, $excluded2))); $db->addField($field2); $db->addRangeFieldIndex(array('field-name' => 'field2')); // Field: type, number, abbrev $field3 = new MLPHP\Field(array('field-name' => 'field3', 'field-path' => $fieldPath, 'excluded-element' => $excluded1)); $db->addField($field3); // to enable collection constraints parent::$logger->debug('Enable Collection Lexicon'); $db->setProperty('collection-lexicon', 'true'); }