/// <summary>
/// Begin experiment in format: QACExperimenter.exe {collection:[aol|msn|sog]} {prefixLength} {experimentType[bl-a(baseline-all)|bl-w(baseline-window)|wiki(wiki-weighted)]} {startDate:yyyy-mm-dd} {param1:e.g.WindowNDays} ...
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
// Min 3 args
if (args.Length < 4)
{
Console.WriteLine("Not enough parameters provided.");
return;
}
// Determine the arguments
string collection = args[0];
int prefixChars = Convert.ToInt32(args[1]);
string experimentType = args[2];
DateTime startDate = new DateTime(Convert.ToInt32((args[3].Split('-'))[0]), Convert.ToInt32((args[3].Split('-'))[1]), Convert.ToInt32((args[3].Split('-'))[2]));
FileInfo queryLog = new FileInfo(Utilities.DataDirectory + collection + "-queries.txt");
FileInfo interleavedInput = new FileInfo(Utilities.DataDirectory + collection + "-interleavedinput.txt");
if (!interleavedInput.Exists)
interleavedInput = null; // Don't load if the interleaved input is null
// Setup the data model and begin reading
DataModel dm = new DataModel(queryLog, interleavedInput, startDate, 600000000); // I.e. all for now!
dm.OnQuerySubmitted += dm_OnQuerySubmitted;
dm.OnInterleavedInput += dm_OnInterleavedInput;
// Setup the approach
ApproachFactory af = new ApproachFactory(collection, prefixChars, experimentType, args);
_completionApproach = af.Approach;
// Begin reading form the data model
dm.BeginReading();
// Finish up the evaluation
_completionApproach.WaitForFinish();
af.EvalOutput.FinishOutput();
// Output the final MRR
Console.WriteLine("Final MRR: " + Evaluation.StandardEvalOutput.CURRENT_MRR.ToString("F4"));
}