public Query retrieveSinglePass(Strategy strategy) { // implements local retrieval strategy //log.info("retrieveSinglePass %d %s", repository.getPartitions(), strategy.query.query); strategy.prepareAggregation(); HashSet<Integer> collected = new HashSet<Integer>(); if (strategy instanceof RetrievalModel) { for (int i = 0; i < repository.getPartitions(); i++) { Strategy results = retrieveSegment(strategy.query, i); for (int collector = 0; collector < results.collectors.size(); collector++) { Collector aggregator = strategy.collectors.get(collector); aggregator.aggregate(results.collectors.get(collector)); collected.add(collector); } } } else { Strategy results = retrieveSegment(strategy.query, -1); strategy.collectors = results.collectors; for (Collector c : results.collectors) { collected.add(results.collectors.indexOf(c)); } } strategy.collectors.finishReduce(); for (Collector sdf : strategy.collectors) { if (sdf instanceof CollectorCachable) repository.unloadStoredDynamicFeature(((CollectorCachable)sdf).getStoredDynamicFeature()); } return strategy.finishReduceTask(); }
public Query retrieveSinglePass(Strategy strategy) { // implements local retrieval strategy //log.info("retrieveSinglePass %d %s", repository.getPartitions(), strategy.query.query); strategy.prepareAggregation(); HashSet<Integer> collected = new HashSet<Integer>(); if (strategy instanceof RetrievalModel) { for (int i = 0; i < repository.getPartitions(); i++) { Strategy results = retrieveSegment(strategy.query, i); for (int collector = 0; collector < results.collectors.size(); collector++) { Collector aggregator = strategy.collectors.get(collector); aggregator.aggregate(results.collectors.get(collector)); collected.add(collector); } } } else { Strategy results = retrieveSegment(strategy.query, -1); strategy.collectors = results.collectors; for (Collector c : results.collectors) { collected.add(results.collectors.indexOf(c)); } } strategy.collectors.finishReduce(); for (Collector sdf : strategy.collectors) { if (sdf instanceof CollectorCachable) repository.unloadStoredDynamicFeature(((CollectorCachable)sdf).getStoredDynamicFeature()); } return strategy.finishReduceTask(); }
@Override public void write(DataOutput out) { BufferDelayedWriter writer = new BufferDelayedWriter(); writer.writeC(collector.strategy.collectors.indexOf( collector)); writer.write(collector.getCanonicalName()); writer.writeC(partition); collector.writeKey(writer); collector.writeValue(writer); writer.writeBuffer(out); writer = null; }
@Override public void write(DataOutput out) { BufferDelayedWriter writer = new BufferDelayedWriter(); writer.writeC(collector.strategy.collectors.indexOf( collector)); writer.write(collector.getCanonicalName()); writer.writeC(partition); collector.writeKey(writer); collector.writeValue(writer); writer.writeBuffer(out); writer = null; }