LinkedList<BasicDBObject> lowAccuracyAggregatedEvents = null;
LinkedList<BasicDBObject> lowAccuracyAggregatedFacts = null;
AggregationUtils.GeoContainer lowAccuracyAggregatedGeo = null;
AggregationUtils.GeoContainer extraAliasAggregatedGeo = null;
ScoringUtils scoreStats = null;
if (null != stats.getIds()) {
DBCursor docs0 = this.getDocIds(DbManager.getDocument().getMetadata(), stats.getIds(), nRecordsToGet, query.output, query.score);
nMongoTime = System.currentTimeMillis() - nMongoTime;
nProcTime_tmp = System.currentTimeMillis();
// Entity aggregation (CURRENTLY ALWAYS LOW AGGREGATION):
if ((null != query.output.aggregation) && (null != query.output.aggregation.entsNumReturn) && (query.output.aggregation.entsNumReturn > 0)) {
lowAccuracyAggregatedEntities = new LinkedList<BasicDBObject>();
}
// Standalone events:
if ((query.output.docs != null) && (query.output.docs.eventsTimeline != null) && query.output.docs.eventsTimeline) {
standaloneEvents = new LinkedList<BasicDBObject>();
}
// Low accuracy aggregations:
if ((null != manualEventsNumReturn) && (manualEventsNumReturn > 0)) {
lowAccuracyAggregatedEvents = new LinkedList<BasicDBObject>();
}
if ((null != manualFactsNumReturn) && (manualFactsNumReturn > 0)) {
lowAccuracyAggregatedFacts = new LinkedList<BasicDBObject>();
}
if ((null != manualGeoNumReturn) && (manualGeoNumReturn > 0)) {
lowAccuracyAggregatedGeo = new AggregationUtils.GeoContainer();
}
else if ((null != query.output.aggregation) && (null != query.output.aggregation.geoNumReturn) && (query.output.aggregation.geoNumReturn > 0))
{
// (only if not using low accuracy aggregation ... otherwise it all gets dumped in lowAccuracyAggregatedGeo)
extraAliasAggregatedGeo = new AggregationUtils.GeoContainer();
}
scoreStats = new ScoringUtils();
try {
boolean lockAcquired = true;
try {
lockAcquired = this.acquireConcurrentAccessLock();
} catch (InterruptedException e) {
//(that's fine just carry on)
lockAcquired = false;
}
if (!lockAcquired) {
rp.setResponse(new ResponseObject("Query", false, "Query engine busy, please try again later."));
return rp;
}
scoreStats.setAliasLookupTable(_aliasLookup);
docs = scoreStats.calcTFIDFAndFilter(DbManager.getDocument().getMetadata(),
docs0, query.score, query.output, stats, bLowAccuracyDecay,
nRecordsToSkip, nRecordsToOutput,
communityIdStrs,
tempFilterInfo.entityTypeFilterStrings, tempFilterInfo.assocVerbFilterStrings,
standaloneEvents,
lowAccuracyAggregatedEntities,
lowAccuracyAggregatedGeo, extraAliasAggregatedGeo,
lowAccuracyAggregatedEvents, lowAccuracyAggregatedFacts);
}
finally {
scoreStats.clearAsMuchMemoryAsPossible();
this.releaseConcurrentAccessLock();
}
nProcTime += (System.currentTimeMillis() - nProcTime_tmp);
}
else {