private static int CountAllChildren(TaxonomyReader r, int ord) { int count = 0; ChildrenEnumerator it = r.GetChildren(ord); while (it.MoveNext()) { count += 1 + CountAllChildren(r, it.Current); } return(count); }
private static void PrintAllChildren(TextWriter @out, TaxonomyReader r, int ord, string indent, int depth) { ChildrenEnumerator it = r.GetChildren(ord); int child; while (it.MoveNext()) { child = it.Current; @out.WriteLine(indent + "/" + r.GetPath(child).Components[depth]); PrintAllChildren(@out, r, child, indent + " ", depth + 1); } }
/// <summary> /// Recursively prints stats for all ordinals. </summary> public static void PrintStats(TaxonomyReader r, TextWriter @out, bool printTree) { @out.WriteLine(r.Count + " total categories."); ChildrenEnumerator it = r.GetChildren(TaxonomyReader.ROOT_ORDINAL); int child; while (it.MoveNext()) { child = it.Current; ChildrenEnumerator chilrenIt = r.GetChildren(child); int numImmediateChildren = 0; while (chilrenIt.MoveNext()) { numImmediateChildren++; } FacetLabel cp = r.GetPath(child); @out.WriteLine("/" + cp.Components[0] + ": " + numImmediateChildren + " immediate children; " + (1 + CountAllChildren(r, child)) + " total categories"); if (printTree) { PrintAllChildren(@out, r, child, " ", 1); } } }