public override CollectionStatistics CollectionStatistics(string field) { // TODO: we could compute this on init and cache, // since we are re-inited whenever any nodes have a // new reader long docCount = 0; long sumTotalTermFreq = 0; long sumDocFreq = 0; long maxDoc = 0; for (int nodeID = 0; nodeID < NodeVersions.Length; nodeID++) { FieldAndShardVersion key = new FieldAndShardVersion(nodeID, NodeVersions[nodeID], field); CollectionStatistics nodeStats; if (nodeID == MyNodeID) { nodeStats = base.CollectionStatistics(field); } else { nodeStats = OuterInstance.CollectionStatsCache[key]; } if (nodeStats == null) { Console.WriteLine("coll stats myNodeID=" + MyNodeID + ": " + OuterInstance.CollectionStatsCache.Keys); } // Collection stats are pre-shared on reopen, so, // we better not have a cache miss: Debug.Assert(nodeStats != null, "myNodeID=" + MyNodeID + " nodeID=" + nodeID + " version=" + NodeVersions[nodeID] + " field=" + field); long nodeDocCount = nodeStats.DocCount(); if (docCount >= 0 && nodeDocCount >= 0) { docCount += nodeDocCount; } else { docCount = -1; } long nodeSumTotalTermFreq = nodeStats.SumTotalTermFreq(); if (sumTotalTermFreq >= 0 && nodeSumTotalTermFreq >= 0) { sumTotalTermFreq += nodeSumTotalTermFreq; } else { sumTotalTermFreq = -1; } long nodeSumDocFreq = nodeStats.SumDocFreq(); if (sumDocFreq >= 0 && nodeSumDocFreq >= 0) { sumDocFreq += nodeSumDocFreq; } else { sumDocFreq = -1; } Debug.Assert(nodeStats.MaxDoc >= 0); maxDoc += nodeStats.MaxDoc; } return new CollectionStatistics(field, maxDoc, docCount, sumTotalTermFreq, sumDocFreq); }
public override CollectionStatistics CollectionStatistics(string field) { // TODO: we could compute this on init and cache, // since we are re-inited whenever any nodes have a // new reader long docCount = 0; long sumTotalTermFreq = 0; long sumDocFreq = 0; long maxDoc = 0; for (int nodeID = 0; nodeID < nodeVersions.Length; nodeID++) { FieldAndShardVersion key = new FieldAndShardVersion(nodeID, nodeVersions[nodeID], field); CollectionStatistics nodeStats; if (nodeID == MyNodeID) { nodeStats = base.CollectionStatistics(field); } else { nodeStats = outerInstance.collectionStatsCache[key]; } if (nodeStats == null) { Console.WriteLine("coll stats myNodeID=" + MyNodeID + ": " + outerInstance.collectionStatsCache.Keys); } // Collection stats are pre-shared on reopen, so, // we better not have a cache miss: Debug.Assert(nodeStats != null, "myNodeID=" + MyNodeID + " nodeID=" + nodeID + " version=" + nodeVersions[nodeID] + " field=" + field); long nodeDocCount = nodeStats.DocCount; if (docCount >= 0 && nodeDocCount >= 0) { docCount += nodeDocCount; } else { docCount = -1; } long nodeSumTotalTermFreq = nodeStats.SumTotalTermFreq; if (sumTotalTermFreq >= 0 && nodeSumTotalTermFreq >= 0) { sumTotalTermFreq += nodeSumTotalTermFreq; } else { sumTotalTermFreq = -1; } long nodeSumDocFreq = nodeStats.SumDocFreq; if (sumDocFreq >= 0 && nodeSumDocFreq >= 0) { sumDocFreq += nodeSumDocFreq; } else { sumDocFreq = -1; } Debug.Assert(nodeStats.MaxDoc >= 0); maxDoc += nodeStats.MaxDoc; } return(new CollectionStatistics(field, maxDoc, docCount, sumTotalTermFreq, sumDocFreq)); }