private static void PrintAllChildren(TextWriter @out, TaxonomyReader r, int ord, string indent, int depth) { ChildrenIterator it = r.GetChildren(ord); int child; while ((child = it.Next()) != TaxonomyReader.INVALID_ORDINAL) { @out.WriteLine(indent + "/" + r.GetPath(child).Components[depth]); PrintAllChildren(@out, r, child, indent + " ", depth + 1); } }
private static int CountAllChildren(TaxonomyReader r, int ord) { int count = 0; ChildrenIterator it = r.GetChildren(ord); int child; while ((child = it.Next()) != TaxonomyReader.INVALID_ORDINAL) { count += 1 + CountAllChildren(r, child); } return(count); }
/// <summary> /// Recursively prints stats for all ordinals. </summary> public static void PrintStats(TaxonomyReader r, TextWriter @out, bool printTree) { @out.WriteLine(r.Size + " total categories."); ChildrenIterator it = r.GetChildren(TaxonomyReader.ROOT_ORDINAL); int child; while ((child = it.Next()) != TaxonomyReader.INVALID_ORDINAL) { ChildrenIterator chilrenIt = r.GetChildren(child); int numImmediateChildren = 0; while (chilrenIt.Next() != TaxonomyReader.INVALID_ORDINAL) { 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); } } }