2017 R1 Update Rollup 1

Scripts for IndexingPermanent link for this heading

Although there are a number of built-in actions for indexing, the following scripts may be used. The scripts are listed as examples.

Note:

  • <COOADDRESS> is a placeholder for the address of the indexing service object. You have to adapt this value for your installation.
  • For log files you have to consider the path depending on your installation (Microsoft Windows or Linux)
  • Every MMC area without logging has to be closed (you cannot delta index these areas). To index these areas, you have to set the indexing parameter "CONTENT IS NOT NULL" (e.g. „meth.SetParameter2(5, "STRING", "CONTENT IS NOT NULL");“)

Script “Build Index 4 Threads”Permanent link for this heading

//LANGUAGE="JavaScript"

/*==========================================================================
  Copyright (c) Fabasoft R&D GmbH, A-4020 Linz, 1995-2009.


  
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind
  Handelsnamen und/oder Marken der jeweiligen Hersteller.


  Der Nutzer des Computerprogramms anerkennt, dass der oben stehende

  Copyright-Vermerk im Sinn des Welturheberrechtsabkommens an der vom

  Urheber festgelegten Stelle in der Funktion des Computerprogramms

  angebracht bleibt, um den Vorbehalt des Urheberrechtes
genuegend zum
  Ausdruck zu bringen. Dieser Urheberrechtsvermerk darf weder vom Kunden,

  Nutzer und/oder von Dritten entfernt,
veraendert oder disloziert werden.
  
==========================================================================*/

// This script can be used to create an initial index.
// All objects, configured in the Mindbreeze Configuration object are

// sent to Fabasoft Mindbreeze Enterprise.

// Get the index service by object address.

var indexservice = coort.GetObject("<COOADDRESS>");

// Define Logfile.
// Directory "C:\Logs" must exist.

var datetime = coort.Parse(
  
cootx,
  "STRING(
coort.GetCurrentDateTime(this))",
  2).Evaluate3(
cootx, null, indexservice).getItem(0);

datetime = datetime.replace(new RegExp(/:/g), "-");
var logfilename = "C:\\Logs\\Index-" + datetime + ".log";

cootx.SetVariable2("COOSYSTEM@1.1", 2, "BOOLEAN", true);
cootx.SetVariable2("COOSYSTEM@1.1", 14, "STRING",
logfilename);

// Set indexing parameters.
// Objects are processed in chunks of 400 objects,
4 threads are used.

var meth = indexservice.GetMethod(cootx, "BuildIndex");
meth.SetParameter2(1, "INTEGER", 400); //
chunksize:   400
meth.SetParameter2(4, "INTEGER", 4);   //
threadcount: 4

try {
  
indexservice.CallMethod(cootx, meth);
}

catch(e) {

  
coort.Trace(e);
}

Script “Recover Index 4 Threads”Permanent link for this heading

//LANGUAGE="JavaScript"

/*==========================================================================
  Copyright (c) Fabasoft R&D GmbH, A-4020 Linz, 1995-2009.


  
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind
  Handelsnamen und/oder Marken der jeweiligen Hersteller.


  Der Nutzer des Computerprogramms anerkennt, dass der oben stehende

  Copyright-Vermerk im Sinn des Welturheberrechtsabkommens an der vom
  Urheber festgelegten Stelle in der Funktion des Computerprogramms

  angebracht bleibt, um den Vorbehalt des Urheberrechtes
genuegend zum
  Ausdruck zu bringen. Dieser Urheberrechtsvermerk darf weder vom Kunden,

  Nutzer und/oder von Dritten entfernt,
veraendert oder disloziert werden.
  
==========================================================================*/

// This script can be used to recover an index by a specific time.
// All objects, indexed after the specified date, are marked for re-indexing.

// Get the index service by object address.

var indexservice = coort.GetObject("<COOADDRESS>");

// Define Logfile.
// Directory "C:\Logs" must exist.

var datetime = coort.Parse(
  
cootx,
  "STRING(
coort.GetCurrentDateTime(this))",
  2).Evaluate3(
cootx, null, indexservice).getItem(0);

datetime = datetime.replace(new RegExp(/:/g), "-");
var logfilename = "C:\\Logs\\RecoverIndex-" + datetime + ".log";

cootx.SetVariable2("COOSYSTEM@1.1", 2, "BOOLEAN", true);
cootx.SetVariable2("COOSYSTEM@1.1", 14, "STRING",
logfilename);

// Mark all objects indexed after "2005-01-01 00:00:00" for reindexing.
// Objects are processed in chunks of 1000 objects,
4 threads are used.

var meth = indexservice.GetMethod(cootx, "RecoverIndex");

meth.SetParameter(1, "DATETIME", "2005-01-01 00:00:00");
meth.SetParameter(2, "INTEGER", 1000);
meth.SetParameter(5, "INTEGER", 4);

try {
  
indexservice.CallMethod(cootx, meth);
}

catch(e) {

  
coort.Trace(e);
}

Script “Delta Indexing”Permanent link for this heading

//LANGUAGE="JavaScript"

/*==========================================================================
  Copyright (c) Fabasoft R&D GmbH, A-4020 Linz, 1995-2009.


  
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind
  Handelsnamen und/oder Marken der jeweiligen Hersteller.


  Der Nutzer des Computerprogramms anerkennt, dass der oben stehende

  Copyright-Vermerk im Sinn des Welturheberrechtsabkommens an der vom

  Urheber festgelegten Stelle in der Funktion des Computerprogramms

  angebracht bleibt, um den Vorbehalt des Urheberrechtes
genuegend zum
  Ausdruck zu bringen. Dieser Urheberrechtsvermerk darf weder vom Kunden,

  Nutzer und/oder von Dritten entfernt,
veraendert oder disloziert werden.
  
==========================================================================*/

// This script can be used to re-index objects.
// Less objects are processed in common, so less locks will be visible to users.

//
To specify the date of the last complete index run improves performance.

var currdate = new Date();

// Define Logfile.
// Directory "C:\Logs" must exist.

var logfilename = "C:\\Logs\\Re-Index-" + FormatDate(currdate, true) + ".log";

// Get the index service by object address.

var indexservice = coort.GetObject("<COOADDRESS>");

// Correct date according to your desired delta indexing interval.

var hoursToSubtract = 1;
// Amount of hours considered to set date of last index run.

var fullIndexHour = 23;
//
Specifiy the hour to start a complete index run (till last complete index run).

var lastIndex = "2009-00-00 00:00:00";
// Date of last complete index run.

cootx.SetVariable2("COOSYSTEM@1.1", 2, "BOOLEAN", true);
cootx.SetVariable2("COOSYSTEM@1.1", 14, "STRING",
logfilename);

var hour = currdate.getHours();

if (hour == fullIndexHour){
  
indexFrom = lastIndex;
}

else {

  
currdate.setHours(hour - hoursToSubtract);
  
indexFrom = FormatDate(currdate, false);
}          

// Set indexing parameters.
// Objects are processed in chunks of 20 objects,
4 threads are used.

coort.Trace("IndexFrom: " + indexFrom);

var meth = indexservice.GetMethod(cootx, "BuildIndex");

meth.SetParameter2(1, "INTEGER", 20);
meth.SetParameter2(2, "DATETIME",
indexFrom);
meth.SetParameter2(4, "INTEGER", 4);

try {
  
indexservice.CallMethod(cootx, meth);
}

catch(e) {

  
coort.Trace(e);
}

function FormatInt(input){
  return (input < 10) ? "0" +
input : input;
}

function FormatDate(input, filename){
  return
input.getFullYear() + "-" + FormatInt(input.getMonth()+1) + "-" +
  
FormatInt(input.getDate()) + ((filename==true) ? "_" : " ") +
  
FormatInt(input.getHours()) + ((filename==true) ? "_" : ":") +
  
FormatInt(input.getMinutes()) + ((filename==true) ? "_" : ":") +
  
FormatInt(input.getSeconds())

}

Script “Build Index 4 Threads” (Limit by Date)Permanent link for this heading

//LANGUAGE="JavaScript"

/*==========================================================================
  Copyright (c) Fabasoft R&D GmbH, A-4020 Linz, 1995-2009.


  
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind
  Handelsnamen und/oder Marken der jeweiligen Hersteller.


  Der Nutzer des Computerprogramms anerkennt, dass der oben stehende

  Copyright-Vermerk im Sinn des Welturheberrechtsabkommens an der vom

  Urheber festgelegten Stelle in der Funktion des Computerprogramms

  angebracht bleibt, um den Vorbehalt des Urheberrechtes
genuegend zum
  Ausdruck zu bringen. Dieser Urheberrechtsvermerk darf weder vom Kunden,
  Nutzer und/oder von Dritten entfernt,
veraendert oder disloziert werden.
  ==========================================================================*/

// This script can be used to create an initial index.
//
The date limit enables a separation objects to index.
//
This can be used to start multiple independent indexing runs
// or to index objects in parallel on multiple servers.

// All objects, configured in the Mindbreeze Configuration object are

// sent to Fabasoft Mindbreeze Enterprise.

// Get the index service by object address.

var indexservice = coort.GetObject("<COOADDRESS>");

// Define Logfile.
// Directory "C:\Logs" must exist.

var datetime = coort.Parse(
  
cootx,
  "STRING(
coort.GetCurrentDateTime(this))",
  2).Evaluate3(
cootx, null, indexservice).getItem(0);

datetime = datetime.replace(new RegExp(/:/g), "-");
var logfilename = "C:\\Logs\\BuildIndex-" + datetime + ".log";

cootx.SetVariable2("COOSYSTEM@1.1", 2, "BOOLEAN", true);
cootx.SetVariable2("COOSYSTEM@1.1", 14, "STRING",
logfilename);

// Set indexing parameters.
// Objects are processed in chunks of 400 objects,
4 threads are used.

var meth = indexservice.GetMethod(cootx, "BuildIndex");

meth.SetParameter2(1, "INTEGER", 400);
meth.SetParameter2(2, "DATETIME", "<date from (
objchangedat)>");
meth.SetParameter2(3, "DATETIME", "<date till (
objchangedat)>");
meth.SetParameter2(4, "INTEGER", 4);

try {
  
indexservice.CallMethod(cootx, meth);
}

catch(e) {

  
coort.Trace(e);
}

Script “Recover Contents 4 Threads” (New Filter)Permanent link for this heading

//LANGUAGE="JavaScript"

/*==========================================================================
  Copyright (c) Fabasoft R&D GmbH, A-4020 Linz, 1995-2009.


  
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind
  Handelsnamen und/oder Marken der jeweiligen Hersteller.


  Der Nutzer des Computerprogramms anerkennt, dass der oben stehende

  Copyright-Vermerk im Sinn des Welturheberrechtsabkommens an der vom

  Urheber festgelegten Stelle in der Funktion des Computerprogramms

  angebracht bleibt, um den Vorbehalt des Urheberrechtes
genuegend zum
  Ausdruck zu bringen. Dieser Urheberrechtsvermerk darf weder vom Kunden,

  Nutzer und/oder von Dritten entfernt,
veraendert oder disloziert werden.
  ==========================================================================*/

// If the list of file extensions to index is modified after a successful
// indexing run, this script has to be executed first.

//
Afterwards file extension can be added in the filter service and the
// indexing can be restarted.

// Get the index service by object address.

var indexservice = coort.GetObject("<COOADDRESS>");

// Define Logfile.
// Directory "C:\Logs" must exist.

var datetime = coort.Parse(
  
cootx,
  "STRING(
coort.GetCurrentDateTime(this))",
  2).Evaluate3(
cootx, null, indexservice).getItem(0);

datetime = datetime.replace(new RegExp(/:/g), "-");
var logfilename = "C:\\Logs\\AddFilterExtensions-" + datetime + ".log";

cootx.SetVariable2("COOSYSTEM@1.1", 2, "BOOLEAN", true);
cootx.SetVariable2("COOSYSTEM@1.1", 14, "STRING",
logfilename);

// Mark all objects indexed after "2000-01-01 00:00:00" for re-indexing.
// Objects are processed in chunks of 1000 objects,
4 threads are used.

var meth = indexservice.GetMethod(cootx, "RecoverIndex");

meth.SetParameter2(1, "DATETIME", "2000-01-01 00:00:00");
meth.SetParameter2(2, "INTEGER", 1000);

meth.SetParameter2(4, "STRING",

  ".
objlogcontmap.objlogmapindexedat=1900-01-01 00:00:00");
meth.SetParameter2(5, "INTEGER", 4);

try {
  
indexservice.CallMethod(cootx, meth);
}

catch(e) {

  
coort.Trace(e);
}

Script “Recover Objects 4 Threads” (New Property)Permanent link for this heading

//LANGUAGE="JavaScript"

/*==========================================================================
  Copyright (c) Fabasoft R&D GmbH, A-4020 Linz, 1995-2009.


  
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind
  Handelsnamen und/oder Marken der jeweiligen Hersteller.


  Der Nutzer des Computerprogramms anerkennt, dass der oben stehende

  Copyright-Vermerk im Sinn des Welturheberrechtsabkommens an der vom

  Urheber festgelegten Stelle in der Funktion des Computerprogramms

  angebracht bleibt, um den Vorbehalt des Urheberrechtes
genuegend zum
  Ausdruck zu bringen. Dieser Urheberrechtsvermerk darf weder vom Kunden,

  Nutzer und/oder von Dritten entfernt,
veraendert oder disloziert werden.
  ==========================================================================*/

// Occasionally it can be required to reset objects of a specific class after
// an index run, to re-index these objects (e.g. adding a new property to index).

// Get the index service by object address.

var indexservice = coort.GetObject("<COOADDRESS>");

// Define Logfile.
// Directory "C:\Logs" must exist.

var datetime = coort.Parse(
  
cootx,
  "STRING(
coort.GetCurrentDateTime(this))",
  2).Evaluate3(
cootx, null, indexservice).getItem(0);

datetime = datetime.replace(new RegExp(/:/g), "-");
var logfilename = "C:\\Logs\\RecoverObjects-" + datetime + ".log";

cootx.SetVariable2("COOSYSTEM@1.1", 2, "BOOLEAN", true);
cootx.SetVariable2("COOSYSTEM@1.1", 14, "STRING",
logfilename);

// Mark all objects indexed after "2000-01-01 00:00:00" for re-indexing.
// Objects are processed in chunks of 1000 objects,
4 threads are used.

var meth = indexservice.GetMethod(cootx, "RecoverIndex");

meth.SetParameter2(1, "DATETIME", "2005-01-01 00:00:00");
meth.SetParameter2(2, "INTEGER", 1000);

meth.SetParameter2(3, "OBJECT", "<COOADDRESS of object class >");

meth.SetParameter2(5, "INTEGER", 4);

try {
  
indexservice.CallMethod(cootx, meth);
}

catch(e) {

  
coort.Trace(e);
}