You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2014/11/25 19:52:10 UTC

[09/16] lucenenet git commit: Move facets into src folder

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/FacetLabel.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/FacetLabel.cs b/Lucene.Net.Facet/Taxonomy/FacetLabel.cs
deleted file mode 100644
index a448d08..0000000
--- a/Lucene.Net.Facet/Taxonomy/FacetLabel.cs
+++ /dev/null
@@ -1,219 +0,0 @@
-using System;
-using System.Diagnostics;
-using Lucene.Net.Support;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-    using LruTaxonomyWriterCache = Lucene.Net.Facet.Taxonomy.WriterCache.LruTaxonomyWriterCache;
-    using NameHashIntCacheLRU = Lucene.Net.Facet.Taxonomy.WriterCache.NameHashIntCacheLRU;
-
-    /// <summary>
-    /// Holds a sequence of string components, specifying the hierarchical name of a
-    /// category.
-    /// 
-    /// @lucene.internal
-    /// </summary>
-    public class FacetLabel : IComparable<FacetLabel>
-    {
-        private static readonly int BYTE_BLOCK_SIZE = Lucene.Net.Util.ByteBlockPool.BYTE_BLOCK_SIZE;
-        /*
-         * copied from DocumentWriterPerThread -- if a FacetLabel is resolved to a
-         * drill-down term which is encoded to a larger term than that length, it is
-         * silently dropped! Therefore we limit the number of characters to MAX/4 to
-         * be on the safe side.
-         */
-        /// <summary>
-        /// The maximum number of characters a <seealso cref="FacetLabel"/> can have.
-        /// </summary>
-        public static readonly int MAX_CATEGORY_PATH_LENGTH = (BYTE_BLOCK_SIZE - 2) / 4;
-
-        /// <summary>
-        /// The components of this <seealso cref="FacetLabel"/>. Note that this array may be
-        /// shared with other <seealso cref="FacetLabel"/> instances, e.g. as a result of
-        /// <seealso cref="#subpath(int)"/>, therefore you should traverse the array up to
-        /// <seealso cref="#length"/> for this path's components.
-        /// </summary>
-        public readonly string[] Components;
-
-        /// <summary>
-        /// The number of components of this <seealso cref="FacetLabel"/>. </summary>
-        public readonly int Length;
-
-        // Used by subpath
-        private FacetLabel(FacetLabel copyFrom, int prefixLen)
-        {
-            // while the code which calls this method is safe, at some point a test
-            // tripped on AIOOBE in toString, but we failed to reproduce. adding the
-            // assert as a safety check.
-            Debug.Assert(prefixLen >= 0 && prefixLen <= copyFrom.Components.Length, "prefixLen cannot be negative nor larger than the given components' length: prefixLen=" + prefixLen + " components.length=" + copyFrom.Components.Length);
-            this.Components = copyFrom.Components;
-            Length = prefixLen;
-        }
-
-        /// <summary>
-        /// Construct from the given path components. </summary>
-        public FacetLabel(params string[] components)
-        {
-            this.Components = components;
-            Length = components.Length;
-            CheckComponents();
-        }
-
-        /// <summary>
-        /// Construct from the dimension plus the given path components. </summary>
-        public FacetLabel(string dim, string[] path)
-        {
-            Components = new string[1 + path.Length];
-            Components[0] = dim;
-            Array.Copy(path, 0, Components, 1, path.Length);
-            Length = Components.Length;
-            CheckComponents();
-        }
-
-        private void CheckComponents()
-        {
-            long len = 0;
-            foreach (string comp in Components)
-            {
-                if (string.IsNullOrEmpty(comp))
-                {
-                    throw new System.ArgumentException("empty or null components not allowed: " + Arrays.ToString(Components));
-                }
-                len += comp.Length;
-            }
-            len += Components.Length - 1; // add separators
-            if (len > MAX_CATEGORY_PATH_LENGTH)
-            {
-                throw new System.ArgumentException("category path exceeds maximum allowed path length: max=" + MAX_CATEGORY_PATH_LENGTH + " len=" + len + " path=" + Arrays.ToString(Components).Substring(0, 30) + "...");
-            }
-        }
-
-        /// <summary>
-        /// Compares this path with another <seealso cref="FacetLabel"/> for lexicographic
-        /// order.
-        /// </summary>
-        public virtual int CompareTo(FacetLabel other)
-        {
-            int len = Length < other.Length ? Length : other.Length;
-            for (int i = 0, j = 0; i < len; i++, j++)
-            {
-                int cmp = Components[i].CompareTo(other.Components[j]);
-                if (cmp < 0)
-                {
-                    return -1; // this is 'before'
-                }
-                if (cmp > 0)
-                {
-                    return 1; // this is 'after'
-                }
-            }
-
-            // one is a prefix of the other
-            return Length - other.Length;
-        }
-
-        public override bool Equals(object obj)
-        {
-            if (!(obj is FacetLabel))
-            {
-                return false;
-            }
-
-            FacetLabel other = (FacetLabel)obj;
-            if (Length != other.Length)
-            {
-                return false; // not same length, cannot be equal
-            }
-
-            // CategoryPaths are more likely to differ at the last components, so start
-            // from last-first
-            for (int i = Length - 1; i >= 0; i--)
-            {
-                if (!string.Equals(Components[i], other.Components[i]))
-                {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        public override int GetHashCode()
-        {
-            if (Length == 0)
-            {
-                return 0;
-            }
-
-            return Arrays.GetHashCode(Components);
-        }
-
-        /// <summary>
-        /// Calculate a 64-bit hash function for this path.  This
-        ///  is necessary for <seealso cref="NameHashIntCacheLRU"/> (the
-        ///  default cache impl for {@link
-        ///  LruTaxonomyWriterCache}) to reduce the chance of
-        ///  "silent but deadly" collisions. 
-        /// </summary>
-        public virtual long LongHashCode()
-        {
-            if (Length == 0)
-            {
-                return 0;
-            }
-
-            long hash = Length;
-            for (int i = 0; i < Length; i++)
-            {
-                hash = hash * 65599 + Components[i].GetHashCode();
-            }
-            return hash;
-        }
-
-        /// <summary>
-        /// Returns a sub-path of this path up to {@code length} components. </summary>
-        public virtual FacetLabel Subpath(int len)
-        {
-            if (len >= this.Length || len < 0)
-            {
-                return this;
-            }
-            else
-            {
-                return new FacetLabel(this, len);
-            }
-        }
-
-        /// <summary>
-        /// Returns a string representation of the path.
-        /// </summary>
-        public override string ToString()
-        {
-            if (Length == 0)
-            {
-                return "FacetLabel: []";
-            }
-            string[] parts = new string[Length];
-            Array.Copy(Components, 0, parts, 0, Length);
-            return "FacetLabel: [" + Arrays.ToString(parts) + "]";
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/FastTaxonomyFacetCounts.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/FastTaxonomyFacetCounts.cs b/Lucene.Net.Facet/Taxonomy/FastTaxonomyFacetCounts.cs
deleted file mode 100644
index f0d5fa0..0000000
--- a/Lucene.Net.Facet/Taxonomy/FastTaxonomyFacetCounts.cs
+++ /dev/null
@@ -1,105 +0,0 @@
-using System.Collections.Generic;
-using Lucene.Net.Facet;
-using Lucene.Net.Search;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using MatchingDocs = FacetsCollector.MatchingDocs;
-    using BinaryDocValues = Lucene.Net.Index.BinaryDocValues;
-    using DocIdSetIterator = Lucene.Net.Search.DocIdSetIterator;
-    using BytesRef = Lucene.Net.Util.BytesRef;
-
-    /// <summary>
-    /// Computes facets counts, assuming the default encoding
-    ///  into DocValues was used.
-    /// 
-    /// @lucene.experimental 
-    /// </summary>
-    public class FastTaxonomyFacetCounts : IntTaxonomyFacets
-    {
-
-        /// <summary>
-        /// Create {@code FastTaxonomyFacetCounts}, which also
-        ///  counts all facet labels. 
-        /// </summary>
-        public FastTaxonomyFacetCounts(TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : this(FacetsConfig.DEFAULT_INDEX_FIELD_NAME, taxoReader, config, fc)
-        {
-        }
-
-        /// <summary>
-        /// Create {@code FastTaxonomyFacetCounts}, using the
-        ///  specified {@code indexFieldName} for ordinals.  Use
-        ///  this if you had set {@link
-        ///  FacetsConfig#setIndexFieldName} to change the index
-        ///  field name for certain dimensions. 
-        /// </summary>
-        public FastTaxonomyFacetCounts(string indexFieldName, TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : base(indexFieldName, taxoReader, config)
-        {
-            Count(fc.GetMatchingDocs);
-        }
-
-        private void Count(IList<FacetsCollector.MatchingDocs> matchingDocs)
-        {
-            foreach (FacetsCollector.MatchingDocs hits in matchingDocs)
-            {
-                BinaryDocValues dv = hits.context.AtomicReader.GetBinaryDocValues(IndexFieldName);
-                if (dv == null) // this reader does not have DocValues for the requested category list
-                {
-                    continue;
-                }
-
-                DocIdSetIterator docs = hits.bits.GetIterator();
-
-                int doc;
-                BytesRef bytesRef = new BytesRef();
-                while ((doc = docs.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
-                {
-                    dv.Get(doc,bytesRef);
-                    var bytes = bytesRef.Bytes;
-                    int end = bytesRef.Offset + bytesRef.Length;
-                    int ord = 0;
-                    int offset = bytesRef.Offset;
-                    int prev = 0;
-                    while (offset < end)
-                    {
-                        byte b = bytes[offset++];
-                        if ((sbyte)b >= 0)
-                        {
-                            prev = ord = ((ord << 7) | b) + prev;
-                            ++values[ord];
-                            ord = 0;
-                        }
-                        else
-                        {
-                            ord = (ord << 7) | (b & 0x7F);
-                        }
-                    }
-                }
-            }
-
-            Rollup();
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/FloatAssociationFacetField.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/FloatAssociationFacetField.cs b/Lucene.Net.Facet/Taxonomy/FloatAssociationFacetField.cs
deleted file mode 100644
index cc90e61..0000000
--- a/Lucene.Net.Facet/Taxonomy/FloatAssociationFacetField.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using Lucene.Net.Support;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one or more
-	 * contributor license agreements.  See the NOTICE file distributed with
-	 * this work for additional information regarding copyright ownership.
-	 * The ASF licenses this file to You under the Apache License, Version 2.0
-	 * (the "License"); you may not use this file except in compliance with
-	 * the License.  You may obtain a copy of the License at
-	 *
-	 *     http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing, software
-	 * distributed under the License is distributed on an "AS IS" BASIS,
-	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-	 * See the License for the specific language governing permissions and
-	 * limitations under the License.
-	 */
-
-	using Document = Lucene.Net.Documents.Document;
-	using BytesRef = Lucene.Net.Util.BytesRef;
-
-	/// <summary>
-	/// Add an instance of this to your <seealso cref="Document"/> to add
-	///  a facet label associated with a float.  Use {@link
-	///  TaxonomyFacetSumFloatAssociations} to aggregate float values
-	///  per facet label at search time.
-	/// 
-	///  @lucene.experimental 
-	/// </summary>
-	public class FloatAssociationFacetField : AssociationFacetField
-	{
-
-	  /// <summary>
-	  /// Creates this from {@code dim} and {@code path} and a
-	  ///  float association 
-	  /// </summary>
-	  public FloatAssociationFacetField(float assoc, string dim, params string[] path) : base(floatToBytesRef(assoc), dim, path)
-	  {
-	  }
-
-	  /// <summary>
-	  /// Encodes a {@code float} as a 4-byte <seealso cref="BytesRef"/>. </summary>
-	  public static BytesRef floatToBytesRef(float v)
-	  {
-		return IntAssociationFacetField.intToBytesRef(Number.FloatToIntBits(v));
-	  }
-
-	  /// <summary>
-	  /// Decodes a previously encoded {@code float}. </summary>
-	  public static float bytesRefToFloat(BytesRef b)
-	  {
-		return Number.IntBitsToFloat(IntAssociationFacetField.bytesRefToInt(b));
-	  }
-
-	  public override string ToString()
-	  {
-		return "FloatAssociationFacetField(dim=" + dim + " path=" + Arrays.ToString(path) + " value=" + bytesRefToFloat(assoc) + ")";
-	  }
-	}
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/FloatTaxonomyFacets.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/FloatTaxonomyFacets.cs b/Lucene.Net.Facet/Taxonomy/FloatTaxonomyFacets.cs
deleted file mode 100644
index 3921540..0000000
--- a/Lucene.Net.Facet/Taxonomy/FloatTaxonomyFacets.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Collections.Generic;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-    using DimConfig = Lucene.Net.Facet.FacetsConfig.DimConfig;
-
-    /// <summary>
-    /// Base class for all taxonomy-based facets that aggregate
-    ///  to a per-ords float[]. 
-    /// </summary>
-    public abstract class FloatTaxonomyFacets : TaxonomyFacets
-    {
-
-        /// <summary>
-        /// Per-ordinal value. </summary>
-        protected readonly float[] values;
-
-        /// <summary>
-        /// Sole constructor. </summary>
-        protected internal FloatTaxonomyFacets(string indexFieldName, TaxonomyReader taxoReader, FacetsConfig config)
-            : base(indexFieldName, taxoReader, config)
-        {
-            values = new float[taxoReader.Size];
-        }
-
-        /// <summary>
-        /// Rolls up any single-valued hierarchical dimensions. </summary>
-        protected virtual void Rollup()
-        {
-            // Rollup any necessary dims:
-            foreach (KeyValuePair<string, FacetsConfig.DimConfig> ent in Config.DimConfigs)
-            {
-                string dim = ent.Key;
-                FacetsConfig.DimConfig ft = ent.Value;
-                if (ft.Hierarchical && ft.MultiValued == false)
-                {
-                    int dimRootOrd = TaxoReader.GetOrdinal(new FacetLabel(dim));
-                    Debug.Assert(dimRootOrd > 0);
-                    values[dimRootOrd] += Rollup(Children[dimRootOrd]);
-                }
-            }
-        }
-
-        private float Rollup(int ord)
-        {
-            float sum = 0;
-            while (ord != TaxonomyReader.INVALID_ORDINAL)
-            {
-                float childValue = values[ord] + Rollup(Children[ord]);
-                values[ord] = childValue;
-                sum += childValue;
-                ord = Siblings[ord];
-            }
-            return sum;
-        }
-
-        public override float GetSpecificValue(string dim, params string[] path)
-        {
-            FacetsConfig.DimConfig dimConfig = VerifyDim(dim);
-            if (path.Length == 0)
-            {
-                if (dimConfig.Hierarchical && dimConfig.MultiValued == false)
-                {
-                    // ok: rolled up at search time
-                }
-                else if (dimConfig.RequireDimCount && dimConfig.MultiValued)
-                {
-                    // ok: we indexed all ords at index time
-                }
-                else
-                {
-                    throw new System.ArgumentException("cannot return dimension-level value alone; use getTopChildren instead");
-                }
-            }
-            int ord = TaxoReader.GetOrdinal(new FacetLabel(dim, path));
-            if (ord < 0)
-            {
-                return -1;
-            }
-            return values[ord];
-        }
-
-        public override FacetResult GetTopChildren(int topN, string dim, params string[] path)
-        {
-            if (topN <= 0)
-            {
-                throw new System.ArgumentException("topN must be > 0 (got: " + topN + ")");
-            }
-            FacetsConfig.DimConfig dimConfig = VerifyDim(dim);
-            FacetLabel cp = new FacetLabel(dim, path);
-            int dimOrd = TaxoReader.GetOrdinal(cp);
-            if (dimOrd == -1)
-            {
-                return null;
-            }
-
-            TopOrdAndFloatQueue q = new TopOrdAndFloatQueue(Math.Min(TaxoReader.Size, topN));
-            float bottomValue = 0;
-
-            int ord = Children[dimOrd];
-            float sumValues = 0;
-            int childCount = 0;
-
-            TopOrdAndFloatQueue.OrdAndValue reuse = null;
-            while (ord != TaxonomyReader.INVALID_ORDINAL)
-            {
-                if (values[ord] > 0)
-                {
-                    sumValues += values[ord];
-                    childCount++;
-                    if (values[ord] > bottomValue)
-                    {
-                        if (reuse == null)
-                        {
-                            reuse = new TopOrdAndFloatQueue.OrdAndValue();
-                        }
-                        reuse.ord = ord;
-                        reuse.value = values[ord];
-                        reuse = q.InsertWithOverflow(reuse);
-                        if (q.Size() == topN)
-                        {
-                            bottomValue = q.Top().value;
-                        }
-                    }
-                }
-
-                ord = Siblings[ord];
-            }
-
-            if (sumValues == 0)
-            {
-                return null;
-            }
-
-            if (dimConfig.MultiValued)
-            {
-                if (dimConfig.RequireDimCount)
-                {
-                    sumValues = values[dimOrd];
-                }
-                else
-                {
-                    // Our sum'd count is not correct, in general:
-                    sumValues = -1;
-                }
-            }
-            else
-            {
-                // Our sum'd dim count is accurate, so we keep it
-            }
-
-            LabelAndValue[] labelValues = new LabelAndValue[q.Size()];
-            for (int i = labelValues.Length - 1; i >= 0; i--)
-            {
-                TopOrdAndFloatQueue.OrdAndValue ordAndValue = q.Pop();
-                FacetLabel child = TaxoReader.GetPath(ordAndValue.ord);
-                labelValues[i] = new LabelAndValue(child.Components[cp.Length], ordAndValue.value);
-            }
-
-            return new FacetResult(dim, path, sumValues, labelValues, childCount);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/IntAssociationFacetField.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/IntAssociationFacetField.cs b/Lucene.Net.Facet/Taxonomy/IntAssociationFacetField.cs
deleted file mode 100644
index 61d8177..0000000
--- a/Lucene.Net.Facet/Taxonomy/IntAssociationFacetField.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using Lucene.Net.Support;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-    using Document = Lucene.Net.Documents.Document;
-    using BytesRef = Lucene.Net.Util.BytesRef;
-
-    /// <summary>
-    /// Add an instance of this to your <seealso cref="Document"/> to add
-    ///  a facet label associated with an int.  Use {@link
-    ///  TaxonomyFacetSumIntAssociations} to aggregate int values
-    ///  per facet label at search time.
-    /// 
-    ///  @lucene.experimental 
-    /// </summary>
-    public class IntAssociationFacetField : AssociationFacetField
-    {
-
-        /// <summary>
-        /// Creates this from {@code dim} and {@code path} and an
-        ///  int association 
-        /// </summary>
-        public IntAssociationFacetField(int assoc, string dim, params string[] path)
-            : base(intToBytesRef(assoc), dim, path)
-        {
-        }
-
-        /// <summary>
-        /// Encodes an {@code int} as a 4-byte <seealso cref="BytesRef"/>,
-        ///  big-endian. 
-        /// </summary>
-        public static BytesRef intToBytesRef(int v)
-        {
-            
-            byte[] bytes = new byte[4];
-            // big-endian:
-            bytes[0] = (byte)(v >> 24);
-            bytes[1] = (byte)(v >> 16);
-            bytes[2] = (byte)(v >> 8);
-            bytes[3] = (byte)v;
-            return new BytesRef(bytes);
-        }
-
-        /// <summary>
-        /// Decodes a previously encoded {@code int}. </summary>
-        public static int bytesRefToInt(BytesRef b)
-        {
-            return ((b.Bytes[b.Offset] & 0xFF) << 24) | ((b.Bytes[b.Offset + 1] & 0xFF) << 16) | ((b.Bytes[b.Offset + 2] & 0xFF) << 8) | (b.Bytes[b.Offset + 3] & 0xFF);
-        }
-
-        public override string ToString()
-        {
-            return "IntAssociationFacetField(dim=" + dim + " path=" + Arrays.ToString(path) + " value=" + bytesRefToInt(assoc) + ")";
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/IntTaxonomyFacets.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/IntTaxonomyFacets.cs b/Lucene.Net.Facet/Taxonomy/IntTaxonomyFacets.cs
deleted file mode 100644
index f73f167..0000000
--- a/Lucene.Net.Facet/Taxonomy/IntTaxonomyFacets.cs
+++ /dev/null
@@ -1,189 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using DimConfig = Lucene.Net.Facet.FacetsConfig.DimConfig;
-
-    /// <summary>
-    /// Base class for all taxonomy-based facets that aggregate
-    ///  to a per-ords int[]. 
-    /// </summary>
-
-    public abstract class IntTaxonomyFacets : TaxonomyFacets
-    {
-
-        /// <summary>
-        /// Per-ordinal value. </summary>
-        protected internal readonly int[] values;
-
-        /// <summary>
-        /// Sole constructor. </summary>
-        protected internal IntTaxonomyFacets(string indexFieldName, TaxonomyReader taxoReader, FacetsConfig config)
-            : base(indexFieldName, taxoReader, config)
-        {
-            values = new int[taxoReader.Size];
-        }
-
-        /// <summary>
-        /// Rolls up any single-valued hierarchical dimensions. </summary>
-        protected virtual void Rollup()
-        {
-            // Rollup any necessary dims:
-            foreach (KeyValuePair<string, FacetsConfig.DimConfig> ent in Config.DimConfigs)
-            {
-                string dim = ent.Key;
-                FacetsConfig.DimConfig ft = ent.Value;
-                if (ft.Hierarchical && ft.MultiValued == false)
-                {
-                    int dimRootOrd = TaxoReader.GetOrdinal(new FacetLabel(dim));
-                    // It can be -1 if this field was declared in the
-                    // config but never indexed:
-                    if (dimRootOrd > 0)
-                    {
-                        values[dimRootOrd] += Rollup(Children[dimRootOrd]);
-                    }
-                }
-            }
-        }
-
-        private int Rollup(int ord)
-        {
-            int sum = 0;
-            while (ord != TaxonomyReader.INVALID_ORDINAL)
-            {
-                int childValue = values[ord] + Rollup(Children[ord]);
-                values[ord] = childValue;
-                sum += childValue;
-                ord = Siblings[ord];
-            }
-            return sum;
-        }
-
-        public override float GetSpecificValue(string dim, params string[] path)
-        {
-            var dimConfig = VerifyDim(dim);
-            if (path.Length == 0)
-            {
-                if (dimConfig.Hierarchical && dimConfig.MultiValued == false)
-                {
-                    // ok: rolled up at search time
-                }
-                else if (dimConfig.RequireDimCount && dimConfig.MultiValued)
-                {
-                    // ok: we indexed all ords at index time
-                }
-                else
-                {
-                    throw new System.ArgumentException("cannot return dimension-level value alone; use getTopChildren instead");
-                }
-            }
-            int ord = TaxoReader.GetOrdinal(new FacetLabel(dim, path));
-            if (ord < 0)
-            {
-                return -1;
-            }
-            return values[ord];
-        }
-
-        public override FacetResult GetTopChildren(int topN, string dim, params string[] path)
-        {
-            if (topN <= 0)
-            {
-                throw new System.ArgumentException("topN must be > 0 (got: " + topN + ")");
-            }
-            var dimConfig = VerifyDim(dim);
-            FacetLabel cp = new FacetLabel(dim, path);
-            int dimOrd = TaxoReader.GetOrdinal(cp);
-            if (dimOrd == -1)
-            {
-                return null;
-            }
-
-            TopOrdAndIntQueue q = new TopOrdAndIntQueue(Math.Min(TaxoReader.Size, topN));
-
-            int bottomValue = 0;
-
-            int ord = Children[dimOrd];
-            int totValue = 0;
-            int childCount = 0;
-
-            TopOrdAndIntQueue.OrdAndValue reuse = null;
-            while (ord != TaxonomyReader.INVALID_ORDINAL)
-            {
-                if (values[ord] > 0)
-                {
-                    totValue += values[ord];
-                    childCount++;
-                    if (values[ord] > bottomValue)
-                    {
-                        if (reuse == null)
-                        {
-                            reuse = new TopOrdAndIntQueue.OrdAndValue();
-                        }
-                        reuse.Ord = ord;
-                        reuse.Value = values[ord];
-                        reuse = q.InsertWithOverflow(reuse);
-                        if (q.Size() == topN)
-                        {
-                            bottomValue = q.Top().Value;
-                        }
-                    }
-                }
-
-                ord = Siblings[ord];
-            }
-
-            if (totValue == 0)
-            {
-                return null;
-            }
-
-            if (dimConfig.MultiValued)
-            {
-                if (dimConfig.RequireDimCount)
-                {
-                    totValue = values[dimOrd];
-                }
-                else
-                {
-                    // Our sum'd value is not correct, in general:
-                    totValue = -1;
-                }
-            }
-            else
-            {
-                // Our sum'd dim value is accurate, so we keep it
-            }
-
-            LabelAndValue[] labelValues = new LabelAndValue[q.Size()];
-            for (int i = labelValues.Length - 1; i >= 0; i--)
-            {
-                TopOrdAndIntQueue.OrdAndValue ordAndValue = q.Pop();
-                FacetLabel child = TaxoReader.GetPath(ordAndValue.Ord);
-                labelValues[i] = new LabelAndValue(child.Components[cp.Length], ordAndValue.Value);
-            }
-
-            return new FacetResult(dim, path, totValue, labelValues, childCount);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/LRUHashMap.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/LRUHashMap.cs b/Lucene.Net.Facet/Taxonomy/LRUHashMap.cs
deleted file mode 100644
index d442992..0000000
--- a/Lucene.Net.Facet/Taxonomy/LRUHashMap.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using Lucene.Net.Support;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    /// <summary>
-    /// LRUHashMap is an extension of Java's HashMap, which has a bounded size();
-    /// When it reaches that size, each time a new element is added, the least
-    /// recently used (LRU) entry is removed.
-    /// <para>
-    /// Java makes it very easy to implement LRUHashMap - all its functionality is
-    /// already available from <seealso cref="java.util.LinkedHashMap"/>, and we just need to
-    /// configure that properly.
-    /// </para>
-    /// <para>
-    /// Note that like HashMap, LRUHashMap is unsynchronized, and the user MUST
-    /// synchronize the access to it if used from several threads. Moreover, while
-    /// with HashMap this is only a concern if one of the threads is modifies the
-    /// map, with LURHashMap every read is a modification (because the LRU order
-    /// needs to be remembered) so proper synchronization is always necessary.
-    /// </para>
-    /// <para>
-    /// With the usual synchronization mechanisms available to the user, this
-    /// unfortunately means that LRUHashMap will probably perform sub-optimally under
-    /// heavy contention: while one thread uses the hash table (reads or writes), any
-    /// other thread will be blocked from using it - or even just starting to use it
-    /// (e.g., calculating the hash function). A more efficient approach would be not
-    /// to use LinkedHashMap at all, but rather to use a non-locking (as much as
-    /// possible) thread-safe solution, something along the lines of
-    /// java.util.concurrent.ConcurrentHashMap (though that particular class does not
-    /// support the additional LRU semantics, which will need to be added separately
-    /// using a concurrent linked list or additional storage of timestamps (in an
-    /// array or inside the entry objects), or whatever).
-    /// 
-    /// @lucene.experimental
-    /// </para>
-    /// </summary>
-    public class LRUHashMap<TV, TU> where TU : class //this is implementation of LRU Cache
-    {
-
-        public int MaxSize { get; set; }
-        private int CleanSize;
-        private TimeSpan MaxDuration;
-
-
-        private readonly ConcurrentDictionary<TV, CacheDataObject<TU>> _cache = new ConcurrentDictionary<TV, CacheDataObject<TU>>();
-
-        public LRUHashMap(int maxSize = 50000, int cleanPercentage = 30, TimeSpan maxDuration = default(TimeSpan))
-        {
-            MaxSize = maxSize;
-            CleanSize = (int)Math.Max(MaxSize * (1.0 * cleanPercentage / 100), 1);
-            if (maxDuration == default(TimeSpan))
-            {
-                MaxDuration = TimeSpan.FromDays(1);
-            }
-            else
-            {
-                MaxDuration = maxDuration;
-            }
-        }
-
-        
-        public bool Put(TV cacheKey, TU value)
-        {
-            return AddToCache(cacheKey, value);
-        }
-
-        public bool AddToCache(TV cacheKey, TU value)
-        {
-            var cachedResult = new CacheDataObject<TU>
-            {
-                Usage = 1, //value == null ? 1 : value.Usage + 1,
-                Value = value,
-                Timestamp = DateTime.UtcNow
-            };
-
-            _cache.AddOrUpdate(cacheKey, cachedResult, (_, __) => cachedResult);
-            if (_cache.Count > MaxSize)
-            {
-                foreach (var source in _cache
-                    .OrderByDescending(x => x.Value.Usage)
-                    .ThenBy(x => x.Value.Timestamp)
-                    .Skip(MaxSize - CleanSize))
-                {
-                    if (EqualityComparer<TV>.Default.Equals(source.Key, cacheKey))
-                        continue; // we don't want to remove the one we just added
-                    CacheDataObject<TU> ignored;
-                    _cache.TryRemove(source.Key, out ignored);
-                }
-            }
-            return true;
-        }
-
-        public TU Get(TV cacheKey, bool increment = false)
-        {
-            CacheDataObject<TU> value;
-            if (_cache.TryGetValue(cacheKey, out value) && (DateTime.UtcNow - value.Timestamp) <= MaxDuration)
-            {
-                if (increment)
-                {
-                    Interlocked.Increment(ref value.Usage);
-                }
-                return value.Value;
-            }
-            return null;
-        }
-
-        public bool IsExistInCache(TV cacheKey)
-        {
-            return (_cache.ContainsKey(cacheKey));
-        }
-
-        public int Size()
-        {
-            return _cache.Count;
-        }
-
-        #region Nested type: CacheDataObject
-
-        private class CacheDataObject<T> where T : class
-        {
-            public DateTime Timestamp;
-            public int Usage;
-            public T Value;
-        }
-
-        #endregion
-
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/OrdinalsReader.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/OrdinalsReader.cs b/Lucene.Net.Facet/Taxonomy/OrdinalsReader.cs
deleted file mode 100644
index 544a1ef..0000000
--- a/Lucene.Net.Facet/Taxonomy/OrdinalsReader.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-    using AtomicReaderContext = Lucene.Net.Index.AtomicReaderContext;
-    using IntsRef = Lucene.Net.Util.IntsRef;
-
-    /// <summary>
-    /// Provides per-document ordinals. 
-    /// </summary>
-
-    public abstract class OrdinalsReader
-    {
-
-        /// <summary>
-        /// Returns ordinals for documents in one segment. </summary>
-        public abstract class OrdinalsSegmentReader
-        {
-            /// <summary>
-            /// Get the ordinals for this document.  ordinals.offset
-            ///  must always be 0! 
-            /// </summary>
-            public abstract void Get(int doc, IntsRef ordinals);
-
-            /// <summary>
-            /// Default constructor. 
-            /// </summary>
-            public OrdinalsSegmentReader()
-            {
-            }
-        }
-
-        /// <summary>
-        /// Default constructor. 
-        /// </summary>
-        public OrdinalsReader()
-        {
-        }
-
-        /// <summary>
-        /// Set current atomic reader. 
-        /// </summary>
-        public abstract OrdinalsSegmentReader GetReader(AtomicReaderContext context);
-
-        /// <summary>
-        /// Returns the indexed field name this {@code
-        ///  OrdinalsReader} is reading from. 
-        /// </summary>
-        public abstract string IndexFieldName { get; }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/ParallelTaxonomyArrays.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/ParallelTaxonomyArrays.cs b/Lucene.Net.Facet/Taxonomy/ParallelTaxonomyArrays.cs
deleted file mode 100644
index 26f1d8a..0000000
--- a/Lucene.Net.Facet/Taxonomy/ParallelTaxonomyArrays.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one or more
-	 * contributor license agreements.  See the NOTICE file distributed with
-	 * this work for additional information regarding copyright ownership.
-	 * The ASF licenses this file to You under the Apache License, Version 2.0
-	 * (the "License"); you may not use this file except in compliance with
-	 * the License.  You may obtain a copy of the License at
-	 *
-	 *     http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing, software
-	 * distributed under the License is distributed on an "AS IS" BASIS,
-	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-	 * See the License for the specific language governing permissions and
-	 * limitations under the License.
-	 */
-
-	/// <summary>
-	/// Returns 3 arrays for traversing the taxonomy:
-	/// <ul>
-	/// <li>{@code parents}: {@code parents[i]} denotes the parent of category
-	/// ordinal {@code i}.</li>
-	/// <li>{@code children}: {@code children[i]} denotes a child of category ordinal
-	/// {@code i}.</li>
-	/// <li>{@code siblings}: {@code siblings[i]} denotes the sibling of category
-	/// ordinal {@code i}.</li>
-	/// </ul>
-	/// 
-	/// To traverse the taxonomy tree, you typically start with {@code children[0]}
-	/// (ordinal 0 is reserved for ROOT), and then depends if you want to do DFS or
-	/// BFS, you call {@code children[children[0]]} or {@code siblings[children[0]]}
-	/// and so forth, respectively.
-	/// 
-	/// <para>
-	/// <b>NOTE:</b> you are not expected to modify the values of the arrays, since
-	/// the arrays are shared with other threads.
-	/// 
-	/// @lucene.experimental
-	/// </para>
-	/// </summary>
-	public abstract class ParallelTaxonomyArrays
-	{
-
-	  /// <summary>
-	  /// Sole constructor. </summary>
-	  public ParallelTaxonomyArrays()
-	  {
-	  }
-
-	  /// <summary>
-	  /// Returns the parents array, where {@code parents[i]} denotes the parent of
-	  /// category ordinal {@code i}.
-	  /// </summary>
-	  public abstract int[] Parents();
-
-	  /// <summary>
-	  /// Returns the children array, where {@code children[i]} denotes a child of
-	  /// category ordinal {@code i}.
-	  /// </summary>
-	  public abstract int[] Children();
-
-	  /// <summary>
-	  /// Returns the siblings array, where {@code siblings[i]} denotes the sibling
-	  /// of category ordinal {@code i}.
-	  /// </summary>
-	  public abstract int[] Siblings();
-
-	}
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/PrintTaxonomyStats.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/PrintTaxonomyStats.cs b/Lucene.Net.Facet/Taxonomy/PrintTaxonomyStats.cs
deleted file mode 100644
index a4b44aa..0000000
--- a/Lucene.Net.Facet/Taxonomy/PrintTaxonomyStats.cs
+++ /dev/null
@@ -1,121 +0,0 @@
-using System;
-using System.IO;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using ChildrenIterator = Lucene.Net.Facet.Taxonomy.TaxonomyReader.ChildrenIterator;
-    using DirectoryTaxonomyReader = Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader;
-    using Directory = Lucene.Net.Store.Directory;
-    using FSDirectory = Lucene.Net.Store.FSDirectory;
-
-    /// <summary>
-    /// Prints how many ords are under each dimension. </summary>
-
-    // java -cp ../build/core/classes/java:../build/facet/classes/java org.apache.lucene.facet.util.PrintTaxonomyStats -printTree /s2/scratch/indices/wikibig.trunk.noparents.facets.Lucene41.nd1M/facets
-    public class PrintTaxonomyStats
-    {
-
-        /// <summary>
-        /// Sole constructor. </summary>
-        public PrintTaxonomyStats()
-        {
-        }
-
-        /// <summary>
-        /// Command-line tool. </summary>
-        public static void Main(string[] args)
-        {
-            bool printTree = false;
-            string path = null;
-            for (int i = 0; i < args.Length; i++)
-            {
-                if (args[i].Equals("-printTree"))
-                {
-                    printTree = true;
-                }
-                else
-                {
-                    path = args[i];
-                }
-            }
-            if (args.Length != (printTree ? 2 : 1))
-            {
-                Console.WriteLine("\nUsage: java -classpath ... org.apache.lucene.facet.util.PrintTaxonomyStats [-printTree] /path/to/taxononmy/index\n");
-                Environment.Exit(1);
-            }
-            Store.Directory dir = FSDirectory.Open(new DirectoryInfo(path));
-            var r = new DirectoryTaxonomyReader(dir);
-            PrintStats(r, System.Console.Out, printTree);
-            r.Dispose();
-            //dir.close();
-        }
-
-        /// <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);
-                }
-            }
-        }
-
-        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;
-        }
-
-        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);
-            }
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/SearcherTaxonomyManager.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/SearcherTaxonomyManager.cs b/Lucene.Net.Facet/Taxonomy/SearcherTaxonomyManager.cs
deleted file mode 100644
index d543aad..0000000
--- a/Lucene.Net.Facet/Taxonomy/SearcherTaxonomyManager.cs
+++ /dev/null
@@ -1,179 +0,0 @@
-using System.Threading;
-using Lucene.Net.Search;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-    using DirectoryTaxonomyReader = Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader;
-    using DirectoryTaxonomyWriter = Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyWriter;
-    using DirectoryReader = Lucene.Net.Index.DirectoryReader;
-    using IndexReader = Lucene.Net.Index.IndexReader;
-    using IndexWriter = Lucene.Net.Index.IndexWriter;
-    using IndexSearcher = Lucene.Net.Search.IndexSearcher;
-    using Lucene.Net.Search;
-    using SearcherFactory = Lucene.Net.Search.SearcherFactory;
-    using SearcherManager = Lucene.Net.Search.SearcherManager;
-    using Directory = Lucene.Net.Store.Directory;
-    using IOUtils = Lucene.Net.Util.IOUtils;
-
-    /// <summary>
-    /// Manages near-real-time reopen of both an IndexSearcher
-    /// and a TaxonomyReader.
-    /// 
-    /// <para><b>NOTE</b>: If you call {@link
-    /// DirectoryTaxonomyWriter#replaceTaxonomy} then you must
-    /// open a new {@code SearcherTaxonomyManager} afterwards.
-    /// </para>
-    /// </summary>
-    public class SearcherTaxonomyManager : ReferenceManager<SearcherTaxonomyManager.SearcherAndTaxonomy>
-    {
-
-        /// <summary>
-        /// Holds a matched pair of <seealso cref="IndexSearcher"/> and
-        ///  <seealso cref="TaxonomyReader"/> 
-        /// </summary>
-        public class SearcherAndTaxonomy
-        {
-            /// <summary>
-            /// Point-in-time <seealso cref="IndexSearcher"/>. </summary>
-            public readonly IndexSearcher searcher;
-
-            /// <summary>
-            /// Matching point-in-time <seealso cref="DirectoryTaxonomyReader"/>. </summary>
-            public readonly DirectoryTaxonomyReader taxonomyReader;
-
-            /// <summary>
-            /// Create a SearcherAndTaxonomy </summary>
-            public SearcherAndTaxonomy(IndexSearcher searcher, DirectoryTaxonomyReader taxonomyReader)
-            {
-                this.searcher = searcher;
-                this.taxonomyReader = taxonomyReader;
-            }
-        }
-
-        private readonly SearcherFactory searcherFactory;
-        private readonly long taxoEpoch;
-        private readonly DirectoryTaxonomyWriter taxoWriter;
-
-        /// <summary>
-        /// Creates near-real-time searcher and taxonomy reader
-        ///  from the corresponding writers. 
-        /// </summary>
-        public SearcherTaxonomyManager(IndexWriter writer, bool applyAllDeletes, SearcherFactory searcherFactory, DirectoryTaxonomyWriter taxoWriter)
-        {
-            if (searcherFactory == null)
-            {
-                searcherFactory = new SearcherFactory();
-            }
-            this.searcherFactory = searcherFactory;
-            this.taxoWriter = taxoWriter;
-            var taxoReader = new DirectoryTaxonomyReader(taxoWriter);
-            Current = new SearcherAndTaxonomy(SearcherManager.GetSearcher(searcherFactory, DirectoryReader.Open(writer, applyAllDeletes)), taxoReader);
-            this.taxoEpoch = taxoWriter.TaxonomyEpoch;
-        }
-
-        /// <summary>
-        /// Creates search and taxonomy readers over the corresponding directories.
-        /// 
-        /// <para>
-        /// <b>NOTE:</b> you should only use this constructor if you commit and call
-        /// <seealso cref="#maybeRefresh()"/> in the same thread. Otherwise it could lead to an
-        /// unsync'd <seealso cref="IndexSearcher"/> and <seealso cref="TaxonomyReader"/> pair.
-        /// </para>
-        /// </summary>
-        public SearcherTaxonomyManager(Store.Directory indexDir, Store.Directory taxoDir, SearcherFactory searcherFactory)
-        {
-            if (searcherFactory == null)
-            {
-                searcherFactory = new SearcherFactory();
-            }
-            this.searcherFactory = searcherFactory;
-            var taxoReader = new DirectoryTaxonomyReader(taxoDir);
-            Current = new SearcherAndTaxonomy(SearcherManager.GetSearcher(searcherFactory, DirectoryReader.Open(indexDir)), taxoReader);
-            this.taxoWriter = null;
-            taxoEpoch = -1;
-        }
-
-        protected override void DecRef(SearcherAndTaxonomy @ref)
-        {
-            @ref.searcher.IndexReader.DecRef();
-
-            // This decRef can fail, and then in theory we should
-            // tryIncRef the searcher to put back the ref count
-            // ... but 1) the below decRef should only fail because
-            // it decRef'd to 0 and closed and hit some IOException
-            // during close, in which case 2) very likely the
-            // searcher was also just closed by the above decRef and
-            // a tryIncRef would fail:
-            @ref.taxonomyReader.DecRef();
-        }
-
-        protected override bool TryIncRef(SearcherAndTaxonomy @ref)
-        {
-            if (@ref.searcher.IndexReader.TryIncRef())
-            {
-                if (@ref.taxonomyReader.TryIncRef())
-                {
-                    return true;
-                }
-                else
-                {
-                    @ref.searcher.IndexReader.DecRef();
-                }
-            }
-            return false;
-        }
-
-        protected override SearcherAndTaxonomy RefreshIfNeeded(SearcherAndTaxonomy @ref)
-        {
-            // Must re-open searcher first, otherwise we may get a
-            // new reader that references ords not yet known to the
-            // taxonomy reader:
-            IndexReader r = @ref.searcher.IndexReader;
-            IndexReader newReader = DirectoryReader.OpenIfChanged((DirectoryReader)r);
-            if (newReader == null)
-            {
-                return null;
-            }
-            else
-            {
-                var tr = TaxonomyReader.OpenIfChanged(@ref.taxonomyReader);
-                if (tr == null)
-                {
-                    @ref.taxonomyReader.IncRef();
-                    tr = @ref.taxonomyReader;
-                }
-                else if (taxoWriter != null && taxoWriter.TaxonomyEpoch != taxoEpoch)
-                {
-                    IOUtils.Close(newReader, tr);
-                    throw new ThreadStateException("DirectoryTaxonomyWriter.replaceTaxonomy was called, which is not allowed when using SearcherTaxonomyManager");
-                }
-
-                return new SearcherAndTaxonomy(SearcherManager.GetSearcher(searcherFactory, newReader), tr);
-            }
-        }
-
-        protected override int GetRefCount(SearcherAndTaxonomy reference)
-        {
-            return reference.searcher.IndexReader.RefCount;
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/TaxonomyFacetCounts.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetCounts.cs b/Lucene.Net.Facet/Taxonomy/TaxonomyFacetCounts.cs
deleted file mode 100644
index 49be839..0000000
--- a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetCounts.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-using System.Collections.Generic;
-using Lucene.Net.Facet;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using MatchingDocs = FacetsCollector.MatchingDocs;
-    using BinaryDocValues = Lucene.Net.Index.BinaryDocValues;
-    using DocIdSetIterator = Lucene.Net.Search.DocIdSetIterator;
-    using IntsRef = Lucene.Net.Util.IntsRef;
-
-    /// <summary>
-    /// Reads from any <seealso cref="OrdinalsReader"/>; use {@link
-    ///  FastTaxonomyFacetCounts} if you are using the
-    ///  default encoding from <seealso cref="BinaryDocValues"/>.
-    /// 
-    /// @lucene.experimental 
-    /// </summary>
-    public class TaxonomyFacetCounts : IntTaxonomyFacets
-    {
-        private readonly OrdinalsReader ordinalsReader;
-
-        /// <summary>
-        /// Create {@code TaxonomyFacetCounts}, which also
-        ///  counts all facet labels.  Use this for a non-default
-        ///  <seealso cref="OrdinalsReader"/>; otherwise use {@link
-        ///  FastTaxonomyFacetCounts}. 
-        /// </summary>
-        public TaxonomyFacetCounts(OrdinalsReader ordinalsReader, TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : base(ordinalsReader.IndexFieldName, taxoReader, config)
-        {
-            this.ordinalsReader = ordinalsReader;
-            Count(fc.GetMatchingDocs);
-        }
-
-        private void Count(IList<FacetsCollector.MatchingDocs> matchingDocs)
-        {
-            IntsRef scratch = new IntsRef();
-            foreach (FacetsCollector.MatchingDocs hits in matchingDocs)
-            {
-                OrdinalsReader.OrdinalsSegmentReader ords = ordinalsReader.GetReader(hits.context);
-                DocIdSetIterator docs = hits.bits.GetIterator();
-
-                int doc;
-                while ((doc = docs.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
-                {
-                    ords.Get(doc, scratch);
-                    for (int i = 0; i < scratch.Length; i++)
-                    {
-                        values[scratch.Ints[scratch.Offset + i]]++;
-                    }
-                }
-            }
-
-            Rollup();
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumFloatAssociations.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumFloatAssociations.cs b/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumFloatAssociations.cs
deleted file mode 100644
index 7d5188e..0000000
--- a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumFloatAssociations.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System.Collections.Generic;
-using Lucene.Net.Facet;
-using Lucene.Net.Search;
-using Lucene.Net.Support;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using MatchingDocs = FacetsCollector.MatchingDocs;
-    using BinaryDocValues = Lucene.Net.Index.BinaryDocValues;
-    using DocIdSetIterator = Lucene.Net.Search.DocIdSetIterator;
-    using BytesRef = Lucene.Net.Util.BytesRef;
-
-    /// <summary>
-    /// Aggregates sum of int values previously indexed with
-    ///  <seealso cref="FloatAssociationFacetField"/>, assuming the default
-    ///  encoding.
-    /// 
-    ///  @lucene.experimental 
-    /// </summary>
-    public class TaxonomyFacetSumFloatAssociations : FloatTaxonomyFacets
-    {
-
-        /// <summary>
-        /// Create {@code TaxonomyFacetSumFloatAssociations} against
-        ///  the default index field. 
-        /// </summary>
-        public TaxonomyFacetSumFloatAssociations(TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : this(FacetsConfig.DEFAULT_INDEX_FIELD_NAME, taxoReader, config, fc)
-        {
-        }
-
-        /// <summary>
-        /// Create {@code TaxonomyFacetSumFloatAssociations} against
-        ///  the specified index field. 
-        /// </summary>
-        public TaxonomyFacetSumFloatAssociations(string indexFieldName, TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : base(indexFieldName, taxoReader, config)
-        {
-            SumValues(fc.GetMatchingDocs);
-        }
-
-        private void SumValues(IList<FacetsCollector.MatchingDocs> matchingDocs)
-        {
-            //System.out.println("count matchingDocs=" + matchingDocs + " facetsField=" + facetsFieldName);
-            foreach (FacetsCollector.MatchingDocs hits in matchingDocs)
-            {
-                BinaryDocValues dv = hits.context.AtomicReader.GetBinaryDocValues(IndexFieldName);
-                if (dv == null) // this reader does not have DocValues for the requested category list
-                {
-                    continue;
-                }
-
-                DocIdSetIterator docs = hits.bits.GetIterator();
-
-                int doc;
-                while ((doc = docs.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
-                {
-                    //System.out.println("  doc=" + doc);
-                    // TODO: use OrdinalsReader?  we'd need to add a
-                    // BytesRef getAssociation()?
-                    BytesRef bytesRef = new BytesRef();
-                    dv.Get(doc, bytesRef);
-                    byte[] bytes = bytesRef.Bytes;
-                    int end = bytesRef.Offset + bytesRef.Length;
-                    int offset = bytesRef.Offset;
-                    while (offset < end)
-                    {
-                        int ord = ((bytes[offset] & 0xFF) << 24) | ((bytes[offset + 1] & 0xFF) << 16) | ((bytes[offset + 2] & 0xFF) << 8) | (bytes[offset + 3] & 0xFF);
-                        offset += 4;
-                        int value = ((bytes[offset] & 0xFF) << 24) | ((bytes[offset + 1] & 0xFF) << 16) | ((bytes[offset + 2] & 0xFF) << 8) | (bytes[offset + 3] & 0xFF);
-                        offset += 4;
-                        values[ord] += Number.IntBitsToFloat(value);
-                    }
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumIntAssociations.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumIntAssociations.cs b/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumIntAssociations.cs
deleted file mode 100644
index 9942be6..0000000
--- a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumIntAssociations.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-using System.Collections.Generic;
-using Lucene.Net.Facet;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using MatchingDocs = FacetsCollector.MatchingDocs;
-    using BinaryDocValues = Lucene.Net.Index.BinaryDocValues;
-    using DocIdSetIterator = Lucene.Net.Search.DocIdSetIterator;
-    using BytesRef = Lucene.Net.Util.BytesRef;
-
-    /// <summary>
-    /// Aggregates sum of int values previously indexed with
-    ///  <seealso cref="IntAssociationFacetField"/>, assuming the default
-    ///  encoding.
-    /// 
-    ///  @lucene.experimental 
-    /// </summary>
-    public class TaxonomyFacetSumIntAssociations : IntTaxonomyFacets
-    {
-
-        /// <summary>
-        /// Create {@code TaxonomyFacetSumIntAssociations} against
-        ///  the default index field. 
-        /// </summary>
-        public TaxonomyFacetSumIntAssociations(TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : this(FacetsConfig.DEFAULT_INDEX_FIELD_NAME, taxoReader, config, fc)
-        {
-        }
-
-        /// <summary>
-        /// Create {@code TaxonomyFacetSumIntAssociations} against
-        ///  the specified index field. 
-        /// </summary>
-        public TaxonomyFacetSumIntAssociations(string indexFieldName, TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc)
-            : base(indexFieldName, taxoReader, config)
-        {
-            SumValues(fc.GetMatchingDocs);
-        }
-
-        private void SumValues(IList<FacetsCollector.MatchingDocs> matchingDocs)
-        {
-            //System.out.println("count matchingDocs=" + matchingDocs + " facetsField=" + facetsFieldName);
-            foreach (FacetsCollector.MatchingDocs hits in matchingDocs)
-            {
-                BinaryDocValues dv = hits.context.AtomicReader.GetBinaryDocValues(IndexFieldName);
-                if (dv == null) // this reader does not have DocValues for the requested category list
-                {
-                    continue;
-                }
-
-                DocIdSetIterator docs = hits.bits.GetIterator();
-
-                int doc;
-                while ((doc = docs.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
-                {
-                    //System.out.println("  doc=" + doc);
-                    // TODO: use OrdinalsReader?  we'd need to add a
-                    // BytesRef getAssociation()?
-                    BytesRef bytesRef = new BytesRef();
-                    dv.Get(doc, bytesRef);
-                    byte[] bytes = bytesRef.Bytes;
-                    int end = bytesRef.Offset + bytesRef.Length;
-                    int offset = bytesRef.Offset;
-                    while (offset < end)
-                    {
-                        int ord = ((bytes[offset] & 0xFF) << 24) | ((bytes[offset + 1] & 0xFF) << 16) | ((bytes[offset + 2] & 0xFF) << 8) | (bytes[offset + 3] & 0xFF);
-                        offset += 4;
-                        int value = ((bytes[offset] & 0xFF) << 24) | ((bytes[offset + 1] & 0xFF) << 16) | ((bytes[offset + 2] & 0xFF) << 8) | (bytes[offset + 3] & 0xFF);
-                        offset += 4;
-                        values[ord] += value;
-                    }
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumValueSource.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumValueSource.cs b/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumValueSource.cs
deleted file mode 100644
index 4d4fc76..0000000
--- a/Lucene.Net.Facet/Taxonomy/TaxonomyFacetSumValueSource.cs
+++ /dev/null
@@ -1,247 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Threading;
-using Lucene.Net.Facet;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using MatchingDocs = FacetsCollector.MatchingDocs;
-    using AtomicReaderContext = Lucene.Net.Index.AtomicReaderContext;
-    using FunctionValues = Lucene.Net.Queries.Function.FunctionValues;
-    using ValueSource = Lucene.Net.Queries.Function.ValueSource;
-    using DoubleDocValues = Lucene.Net.Queries.Function.DocValues.DoubleDocValues;
-    using DocIdSetIterator = Lucene.Net.Search.DocIdSetIterator;
-    using Scorer = Lucene.Net.Search.Scorer;
-    using Weight = Lucene.Net.Search.Weight;
-    using IntsRef = Lucene.Net.Util.IntsRef;
-
-    /// <summary>
-    /// Aggregates sum of values from {@link
-    ///  FunctionValues#doubleVal}, for each facet label.
-    /// 
-    ///  @lucene.experimental 
-    /// </summary>
-    public class TaxonomyFacetSumValueSource : FloatTaxonomyFacets
-    {
-        private readonly OrdinalsReader ordinalsReader;
-
-        /// <summary>
-        /// Aggreggates float facet values from the provided
-        ///  <seealso cref="ValueSource"/>, pulling ordinals using {@link
-        ///  DocValuesOrdinalsReader} against the default indexed
-        ///  facet field {@link
-        ///  FacetsConfig#DEFAULT_INDEX_FIELD_NAME}. 
-        /// </summary>
-        public TaxonomyFacetSumValueSource(TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc, ValueSource valueSource)
-            : this(new DocValuesOrdinalsReader(FacetsConfig.DEFAULT_INDEX_FIELD_NAME), taxoReader, config, fc, valueSource)
-        {
-        }
-
-        /// <summary>
-        /// Aggreggates float facet values from the provided
-        ///  <seealso cref="ValueSource"/>, and pulls ordinals from the
-        ///  provided <seealso cref="OrdinalsReader"/>. 
-        /// </summary>
-        public TaxonomyFacetSumValueSource(OrdinalsReader ordinalsReader, TaxonomyReader taxoReader, FacetsConfig config, FacetsCollector fc, ValueSource valueSource)
-            : base(ordinalsReader.IndexFieldName, taxoReader, config)
-        {
-            this.ordinalsReader = ordinalsReader;
-            SumValues(fc.GetMatchingDocs, fc.KeepScores, valueSource);
-        }
-
-        private sealed class FakeScorer : Scorer
-        {
-            internal float score_Renamed;
-            internal int docID_Renamed;
-            internal FakeScorer()
-                : base(null)
-            {
-            }
-            public override float Score()
-            {
-                return score_Renamed;
-            }
-            public override int Freq()
-            {
-                throw new System.NotSupportedException();
-            }
-            public override int DocID()
-            {
-                return docID_Renamed;
-            }
-            public override int NextDoc()
-            {
-                throw new System.NotSupportedException();
-            }
-            public override int Advance(int target)
-            {
-                throw new System.NotSupportedException();
-            }
-            public override long Cost()
-            {
-                return 0;
-            }
-            public override Weight Weight
-            {
-                get
-                {
-                    throw new System.NotSupportedException();
-                }
-            }
-
-            public override ICollection<ChildScorer> Children
-            {
-                get
-                {
-                    throw new System.NotSupportedException();
-                }
-            }
-        }
-
-        private void SumValues(IList<MatchingDocs> matchingDocs, bool keepScores, ValueSource valueSource)
-        {
-            FakeScorer scorer = new FakeScorer();
-            IDictionary context = new Dictionary<string, Scorer>();
-            if (keepScores)
-            {
-                context["scorer"] = scorer;
-            }
-            IntsRef scratch = new IntsRef();
-            foreach (MatchingDocs hits in matchingDocs)
-            {
-                OrdinalsReader.OrdinalsSegmentReader ords = ordinalsReader.GetReader(hits.context);
-
-                int scoresIdx = 0;
-                float[] scores = hits.scores;
-
-                FunctionValues functionValues = valueSource.GetValues(context, hits.context);
-                DocIdSetIterator docs = hits.bits.GetIterator();
-
-                int doc;
-                while ((doc = docs.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
-                {
-                    ords.Get(doc, scratch);
-                    if (keepScores)
-                    {
-                        scorer.docID_Renamed = doc;
-                        scorer.score_Renamed = scores[scoresIdx++];
-                    }
-                    float value = (float)functionValues.DoubleVal(doc);
-                    for (int i = 0; i < scratch.Length; i++)
-                    {
-                        values[scratch.Ints[i]] += value;
-                    }
-                }
-            }
-
-            Rollup();
-        }
-
-        /// <summary>
-        /// <seealso cref="ValueSource"/> that returns the score for each
-        ///  hit; use this to aggregate the sum of all hit scores
-        ///  for each facet label.  
-        /// </summary>
-        public class ScoreValueSource : ValueSource
-        {
-
-            /// <summary>
-            /// Sole constructor. </summary>
-            public ScoreValueSource()
-            {
-            }
-
-            public override FunctionValues GetValues(IDictionary context, AtomicReaderContext readerContext)
-            {
-                Scorer scorer = (Scorer)context["scorer"];
-                if (scorer == null)
-                {
-                    throw new ThreadStateException("scores are missing; be sure to pass keepScores=true to FacetsCollector");
-                }
-                return new DoubleDocValuesAnonymousInnerClassHelper(this, scorer);
-            }
-
-            private class DoubleDocValuesAnonymousInnerClassHelper : DoubleDocValues
-            {
-                private readonly ScoreValueSource outerInstance;
-
-                private Scorer scorer;
-
-                public DoubleDocValuesAnonymousInnerClassHelper(ScoreValueSource outerInstance, Scorer scorer)
-                    : base(outerInstance)
-                {
-                    this.outerInstance = outerInstance;
-                    this.scorer = scorer;
-
-                }
-
-                public override double DoubleVal(int document)
-                {
-                    try
-                    {
-                        return scorer.Score();
-                    }
-                    catch (Exception exception)
-                    {
-                        throw;
-                    }
-                }
-            }
-
-            public override bool Equals(object o)
-            {
-                if (ReferenceEquals(null, o)) return false;
-                if (ReferenceEquals(this, o)) return true;
-                if (o.GetType() != this.GetType()) return false;
-                return Equals((ScoreValueSource) o);
-            }
-
-            protected bool Equals(ScoreValueSource other)
-            {
-                return Equals(this, other);
-            }
-
-            public override int GetHashCode()
-            {
-                return hcode;
-            }
-
-            private static readonly int hcode = typeof(DoubleDocValuesAnonymousInnerClassHelper).GetHashCode();
-
-            
-
-
-            public override string Description
-            {
-                get
-                {
-                    return "score()";
-                }
-
-            }
-        }
-
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/eea269f3/Lucene.Net.Facet/Taxonomy/TaxonomyFacets.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Facet/Taxonomy/TaxonomyFacets.cs b/Lucene.Net.Facet/Taxonomy/TaxonomyFacets.cs
deleted file mode 100644
index 355ff6c..0000000
--- a/Lucene.Net.Facet/Taxonomy/TaxonomyFacets.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Lucene.Net.Facet;
-
-namespace Lucene.Net.Facet.Taxonomy
-{
-
-    /*
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements.  See the NOTICE file distributed with
-     * this work for additional information regarding copyright ownership.
-     * The ASF licenses this file to You under the Apache License, Version 2.0
-     * (the "License"); you may not use this file except in compliance with
-     * the License.  You may obtain a copy of the License at
-     *
-     *     http://www.apache.org/licenses/LICENSE-2.0
-     *
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS,
-     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     * See the License for the specific language governing permissions and
-     * limitations under the License.
-     */
-
-
-    using DimConfig = Lucene.Net.Facet.FacetsConfig.DimConfig; // javadocs
-
-    /// <summary>
-    /// Base class for all taxonomy-based facets impls. </summary>
-    public abstract class TaxonomyFacets : Facets
-    {
-
-        private static readonly IComparer<FacetResult> BY_VALUE_THEN_DIM = new ComparatorAnonymousInnerClassHelper();
-
-        private class ComparatorAnonymousInnerClassHelper : IComparer<FacetResult>
-        {
-            public ComparatorAnonymousInnerClassHelper()
-            {
-            }
-
-            public virtual int Compare(FacetResult a, FacetResult b)
-            {
-                if (a.Value > b.Value)
-                {
-                    return -1;
-                }
-                else if (b.Value > a.Value)
-                {
-                    return 1;
-                }
-                else
-                {
-                    return a.Dim.CompareTo(b.Dim);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Index field name provided to the constructor. </summary>
-        protected readonly string IndexFieldName;
-
-        /// <summary>
-        /// {@code TaxonomyReader} provided to the constructor. </summary>
-        protected readonly TaxonomyReader TaxoReader;
-
-        /// <summary>
-        /// {@code FacetsConfig} provided to the constructor. </summary>
-        protected readonly FacetsConfig Config;
-
-        /// <summary>
-        /// Maps parent ordinal to its child, or -1 if the parent
-        ///  is childless. 
-        /// </summary>
-        protected readonly int[] Children;
-
-        /// <summary>
-        /// Maps an ordinal to its sibling, or -1 if there is no
-        ///  sibling. 
-        /// </summary>
-        protected readonly int[] Siblings;
-
-        /// <summary>
-        /// Sole constructor. 
-        /// </summary>
-        protected internal TaxonomyFacets(string indexFieldName, TaxonomyReader taxoReader, FacetsConfig config)
-        {
-            this.IndexFieldName = indexFieldName;
-            this.TaxoReader = taxoReader;
-            this.Config = config;
-            ParallelTaxonomyArrays pta = taxoReader.ParallelTaxonomyArrays;
-            Children = pta.Children();
-            Siblings = pta.Siblings();
-        }
-
-        /// <summary>
-        /// Throws {@code IllegalArgumentException} if the
-        ///  dimension is not recognized.  Otherwise, returns the
-        ///  <seealso cref="DimConfig"/> for this dimension. 
-        /// </summary>
-        protected internal virtual DimConfig VerifyDim(string dim)
-        {
-            DimConfig dimConfig = Config.GetDimConfig(dim);
-            if (!dimConfig.IndexFieldName.Equals(IndexFieldName))
-            {
-                throw new System.ArgumentException("dimension \"" + dim + "\" was not indexed into field \"" + IndexFieldName);
-            }
-            return dimConfig;
-        }
-
-        public override IList<FacetResult> GetAllDims(int topN)
-        {
-            int ord = Children[TaxonomyReader.ROOT_ORDINAL];
-            IList<FacetResult> results = new List<FacetResult>();
-            while (ord != TaxonomyReader.INVALID_ORDINAL)
-            {
-                string dim = TaxoReader.GetPath(ord).Components[0];
-                DimConfig dimConfig = Config.GetDimConfig(dim);
-                if (dimConfig.IndexFieldName.Equals(IndexFieldName))
-                {
-                    FacetResult result = GetTopChildren(topN, dim);
-                    if (result != null)
-                    {
-                        results.Add(result);
-                    }
-                }
-                ord = Siblings[ord];
-            }
-
-            // Sort by highest value, tie break by dim:
-            var resultArray = results.ToArray();
-            Array.Sort(resultArray, BY_VALUE_THEN_DIM);
-            return resultArray;
-        }
-
-    }
-}
\ No newline at end of file