} else {
analyzer = buildAnalyzer(analyzerConfiguration);
}
parser = new IndexEngineParser(defaultField, analyzer);
} else {
parser = new IndexEngineParser(defaultField);
}
boostsManager = new DynamicDataManager(boostsSize, baseDir);
scorer = new BoostsScorer(boostsManager, Maps.<Integer, ScoreFunction>newHashMap());
functionsManager = new UserFunctionsManager(scorer);
boolean someFunctionDefined = false;
String def0 = "0-A";
try {
functionsManager.addFunction(0, def0); // Default timestamp function
} catch (Exception ex) {
logger.error("Defining scoring function (spec '"+def0+"')", ex);
}
if (null != functions && !"".equals(functions)) {
String[] specs = functions.split("\\|");
for (String spec : specs) {
try {
String[] parts = spec.split(":",2);
if (parts.length == 2) {
int id = Integer.parseInt(parts[0].trim());
String def = parts[1].trim();
functionsManager.addFunction(id, def);
someFunctionDefined = true;
} else {
logger.error("Function should be defined as <id>:<definition> (found '"+spec+"').");
}
} catch (Exception ex) {
logger.error("Defining scoring function (spec '"+spec+"')", ex);
}
}
}
FacetingManager facetingManager;
if (facets) {
facetingManager = new DynamicDataFacetingManager(boostsManager);
} else {
facetingManager = new NoFacetingManager();
}
lsi = new LargeScaleIndex(scorer, parser, baseDir, facetingManager);
rti = new RealTimeIndex(scorer, parser, rtiSize, facetingManager);
switch (suggest) {
case NO:
suggestor = new NoSuggestor();
break;
case DOCUMENTS:
IndexEngineParser suggestorParser = new IndexEngineParser(defaultField);
suggestor = new TermSuggestor(suggestorParser, baseDir);
break;
case QUERIES:
suggestor = new QuerySuggestor(parser, baseDir);
break;