コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        /// <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);
                }
            }
        }