* @return The F-number of the configuration.
*/
private double evaluate(GeneticConfiguration config,
MatchListener listener) {
Configuration cconfig = config.getConfiguration();
Processor proc = new Processor(cconfig, database);
TestFileListener eval = makeEval(cconfig, testdb, proc);
if (active || incomplete)
// in active learning the test file is incomplete, so F-number eval
// should be optimistic. similarly if the test file is known to be
// incomplete, for whatever reason
eval.setPessimistic(false);
proc.addMatchListener(eval);
TestFileListener seval = null;
if (scientific) {
seval = makeEval(cconfig, ((LinkFileOracle) oracle).getLinkDatabase(),
proc);
seval.setPessimistic(true);
proc.addMatchListener(seval);
}
if (listener != null)
proc.addMatchListener(listener);
if (cconfig.isDeduplicationMode())
proc.linkRecords(cconfig.getDataSources());
else
proc.linkRecords(cconfig.getDataSources(2), false);
if (seval != null)
sciencetracker.put(config, seval.getFNumber());
config.setFNumber(eval.getFNumber());