You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2016/11/10 11:33:58 UTC
[47/58] [abbrv] lucenenet git commit: Removed superfluous IGroupCount
interface. Created non-generic AbstractDistinctValuesCollector class to nest
IGroupCount and GroupCount so the syntax is similar to Lucene.
Removed superfluous IGroupCount interface. Created non-generic AbstractDistinctValuesCollector class to nest IGroupCount and GroupCount so the syntax is similar to Lucene.
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/41b9732e
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/41b9732e
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/41b9732e
Branch: refs/heads/grouping
Commit: 41b9732e9a11f3ad04f8633ce47857c7c98e18e0
Parents: 95bb669
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Sun Nov 6 22:19:37 2016 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Tue Nov 8 02:24:58 2016 +0700
----------------------------------------------------------------------
.../AbstractDistinctValuesCollector.cs | 93 ++++++++------------
.../Function/FunctionDistinctValuesCollector.cs | 2 +-
.../Term/TermDistinctValuesCollector.cs | 2 +-
.../DistinctValuesCollectorTest.cs | 36 ++++----
4 files changed, 56 insertions(+), 77 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/41b9732e/src/Lucene.Net.Grouping/AbstractDistinctValuesCollector.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Grouping/AbstractDistinctValuesCollector.cs b/src/Lucene.Net.Grouping/AbstractDistinctValuesCollector.cs
index 0f51a24..5c3e624 100644
--- a/src/Lucene.Net.Grouping/AbstractDistinctValuesCollector.cs
+++ b/src/Lucene.Net.Grouping/AbstractDistinctValuesCollector.cs
@@ -14,7 +14,7 @@ namespace Lucene.Net.Search.Grouping
/// </summary>
/// <typeparam name="GC"></typeparam>
public abstract class AbstractDistinctValuesCollector<GC> : Collector, IAbstractDistinctValuesCollector<GC>
- where GC : IGroupCount /* AbstractDistinctValuesCollector<GC>.GroupCount */
+ where GC : AbstractDistinctValuesCollector.IGroupCount<object>
{
/// <summary>
/// Returns all unique values for each top N group.
@@ -35,71 +35,50 @@ namespace Lucene.Net.Search.Grouping
}
}
- //public abstract class AbstractDistinctValuesCollector : Collector
- //{
- // /// <summary>
- // /// Returns all unique values for each top N group.
- // /// </summary>
- // /// <returns>all unique values for each top N group</returns>
- // public abstract List<GC> GetGroups();
-
- // public override bool AcceptsDocsOutOfOrder()
- // {
- // return true;
- // }
-
- // public override Scorer Scorer
- // {
- // set
- // {
- // }
- // }
- //}
-
-
/// <summary>
- /// Returned by <see cref="AbstractDistinctValuesCollector.GetGroups()"/>,
- /// representing the value and set of distinct values for the group.
+ /// LUCENENET specific class used to nest the <see cref="GroupCount{TGroupValue}"/>
+ /// class so it has similar syntax to that in Java Lucene
+ /// (AbstractDistinctValuesCollector.GroupCount{TGroupValue} rather than
+ /// AbstractDistinctValuesCollector{GC}.GroupCount{TGroupValue}).
/// </summary>
- /// <typeparam name="TGroupValue"></typeparam>
- /// <remarks>
- /// LUCENENET - removed this class from being a nested class of
- /// <see cref="AbstractDistinctValuesCollector{GC}"/> and renamed
- /// from GroupCount to AbstractGroupCount
- /// </remarks>
- public abstract class AbstractGroupCount<TGroupValue> : IGroupCount<TGroupValue>
- //where TGroupValue : IComparable
+ public class AbstractDistinctValuesCollector
{
- public TGroupValue GroupValue { get; protected set; }
- public IEnumerable<TGroupValue> UniqueValues { get; protected set; }
+ // Disallow direct creation
+ private AbstractDistinctValuesCollector() { }
- public AbstractGroupCount(TGroupValue groupValue)
+ /// <summary>
+ /// Returned by <see cref="AbstractDistinctValuesCollector.GetGroups()"/>,
+ /// representing the value and set of distinct values for the group.
+ /// </summary>
+ /// <typeparam name="TGroupValue"></typeparam>
+ /// <remarks>
+ /// LUCENENET - removed this class from being a nested class of
+ /// <see cref="AbstractDistinctValuesCollector{GC}"/> and renamed
+ /// from GroupCount to AbstractGroupCount
+ /// </remarks>
+ public abstract class GroupCount<TGroupValue> : IGroupCount<TGroupValue>
{
- this.GroupValue = groupValue;
- this.UniqueValues = new HashSet<TGroupValue>();
- }
- }
-
- /// <summary>
- /// LUCENENET specific interface to allow usage of <see cref="AbstractGroupCount{TGroupValue}"/>
- /// as a generic closing type without having to specify TGroupValue.
- /// </summary>
- public interface IGroupCount
- {
- }
+ public TGroupValue GroupValue { get; protected set; }
+ public IEnumerable<TGroupValue> UniqueValues { get; protected set; }
+ public GroupCount(TGroupValue groupValue)
+ {
+ this.GroupValue = groupValue;
+ this.UniqueValues = new HashSet<TGroupValue>();
+ }
+ }
- /// <summary>
- /// LUCENENET specific interface used to apply covariance to TGroupValue
- /// </summary>
- /// <typeparam name="TGroupValue"></typeparam>
- public interface IGroupCount<out TGroupValue> : IGroupCount
- {
- TGroupValue GroupValue { get; }
- IEnumerable<TGroupValue> UniqueValues { get; }
+ /// <summary>
+ /// LUCENENET specific interface used to apply covariance to TGroupValue
+ /// </summary>
+ /// <typeparam name="TGroupValue"></typeparam>
+ public interface IGroupCount<out TGroupValue>
+ {
+ TGroupValue GroupValue { get; }
+ IEnumerable<TGroupValue> UniqueValues { get; }
+ }
}
-
/// <summary>
/// LUCENENET specific interface used to apply covariance to GC
/// </summary>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/41b9732e/src/Lucene.Net.Grouping/Function/FunctionDistinctValuesCollector.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Grouping/Function/FunctionDistinctValuesCollector.cs b/src/Lucene.Net.Grouping/Function/FunctionDistinctValuesCollector.cs
index 2d5b9ee..22f2395 100644
--- a/src/Lucene.Net.Grouping/Function/FunctionDistinctValuesCollector.cs
+++ b/src/Lucene.Net.Grouping/Function/FunctionDistinctValuesCollector.cs
@@ -70,7 +70,7 @@ namespace Lucene.Net.Search.Grouping.Function
/** Holds distinct values for a single group.
*
* @lucene.experimental */
- public class GroupCount : AbstractGroupCount<MutableValue> /*AbstractDistinctValuesCollector.GroupCount<MutableValue>*/
+ public class GroupCount : AbstractDistinctValuesCollector.GroupCount<MutableValue>
{
internal GroupCount(MutableValue groupValue)
: base(groupValue)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/41b9732e/src/Lucene.Net.Grouping/Term/TermDistinctValuesCollector.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Grouping/Term/TermDistinctValuesCollector.cs b/src/Lucene.Net.Grouping/Term/TermDistinctValuesCollector.cs
index ac4d4e9..91bc674 100644
--- a/src/Lucene.Net.Grouping/Term/TermDistinctValuesCollector.cs
+++ b/src/Lucene.Net.Grouping/Term/TermDistinctValuesCollector.cs
@@ -129,7 +129,7 @@ namespace Lucene.Net.Search.Grouping.Terms
/** Holds distinct values for a single group.
*
* @lucene.experimental */
- public class GroupCount : AbstractGroupCount<BytesRef> /*AbstractDistinctValuesCollector.GroupCount<BytesRef>*/
+ public class GroupCount : AbstractDistinctValuesCollector.GroupCount<BytesRef>
{
internal int[] ords;
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/41b9732e/src/Lucene.Net.Tests.Grouping/DistinctValuesCollectorTest.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Grouping/DistinctValuesCollectorTest.cs b/src/Lucene.Net.Tests.Grouping/DistinctValuesCollectorTest.cs
index 24beb86..711f339 100644
--- a/src/Lucene.Net.Tests.Grouping/DistinctValuesCollectorTest.cs
+++ b/src/Lucene.Net.Tests.Grouping/DistinctValuesCollectorTest.cs
@@ -26,7 +26,7 @@ namespace Lucene.Net.Search.Grouping
private readonly string countField = "publisher";
private readonly string dvCountField = "publisher_dv";
- internal class ComparerAnonymousHelper1 : IComparer<IGroupCount<IComparable>>
+ internal class ComparerAnonymousHelper1 : IComparer<AbstractDistinctValuesCollector.IGroupCount<IComparable>>
{
private readonly DistinctValuesCollectorTest outerInstance;
@@ -35,7 +35,7 @@ namespace Lucene.Net.Search.Grouping
this.outerInstance = outerInstance;
}
- public int Compare(IGroupCount<IComparable> groupCount1, IGroupCount<IComparable> groupCount2)
+ public int Compare(AbstractDistinctValuesCollector.IGroupCount<IComparable> groupCount1, AbstractDistinctValuesCollector.IGroupCount<IComparable> groupCount2)
{
if (groupCount1.GroupValue == null)
{
@@ -138,7 +138,7 @@ namespace Lucene.Net.Search.Grouping
// LUCENENET TODO: Create an ICollector interface that we can inherit our Collector interfaces from
// so this cast is not necessary. Consider eliminating the Collector abstract class.
indexSearcher.Search(new TermQuery(new Term("content", "random")), firstCollector as Collector);
- IAbstractDistinctValuesCollector<IGroupCount<IComparable>> distinctValuesCollector
+ IAbstractDistinctValuesCollector<AbstractDistinctValuesCollector.IGroupCount<IComparable>> distinctValuesCollector
= CreateDistinctCountCollector(firstCollector, groupField, countField, dvType.GetValueOrDefault());
// LUCENENET TODO: Create an ICollector interface that we can inherit our Collector interfaces from
// so this cast is not necessary. Consider eliminating the Collector abstract class.
@@ -146,7 +146,7 @@ namespace Lucene.Net.Search.Grouping
//var gcs = distinctValuesCollector.Groups as List<IGroupCount<IComparable>>;
// LUCENENET TODO: Try to work out how to do this without an O(n) operation
- var gcs = new List<IGroupCount<IComparable>>(distinctValuesCollector.Groups);
+ var gcs = new List<AbstractDistinctValuesCollector.IGroupCount<IComparable>>(distinctValuesCollector.Groups);
gcs.Sort(cmp);
assertEquals(4, gcs.Count);
@@ -184,7 +184,7 @@ namespace Lucene.Net.Search.Grouping
// LUCENENET TODO: Try to work out how to do this without an O(n) operation
//gcs = distinctValuesCollector.Groups as List<IGroupCount<IComparable>>;
- gcs = new List<IGroupCount<IComparable>>(distinctValuesCollector.Groups);
+ gcs = new List<AbstractDistinctValuesCollector.IGroupCount<IComparable>>(distinctValuesCollector.Groups);
gcs.Sort(cmp);
assertEquals(3, gcs.Count);
@@ -217,7 +217,7 @@ namespace Lucene.Net.Search.Grouping
// LUCENENET TODO: Try to work out how to do this without an O(n) operation
//gcs = distinctValuesCollector.Groups as List<IGroupCount<IComparable>>;
- gcs = new List<IGroupCount<IComparable>>(distinctValuesCollector.Groups);
+ gcs = new List<AbstractDistinctValuesCollector.IGroupCount<IComparable>>(distinctValuesCollector.Groups);
gcs.Sort(cmp);
assertEquals(2, gcs.Count);
@@ -253,20 +253,20 @@ namespace Lucene.Net.Search.Grouping
Sort groupSort = new Sort(new SortField("id", SortField.Type_e.STRING));
int topN = 1 + random.nextInt(10);
- List<IGroupCount<IComparable>> expectedResult = CreateExpectedResult(context, term, groupSort, topN);
+ List<AbstractDistinctValuesCollector.IGroupCount<IComparable>> expectedResult = CreateExpectedResult(context, term, groupSort, topN);
IAbstractFirstPassGroupingCollector<IComparable> firstCollector = CreateRandomFirstPassCollector(dvType, groupSort, groupField, topN);
// LUCENENET TODO: Create an ICollector interface that we can inherit our Collector interfaces from
// so this cast is not necessary. Consider eliminating the Collector abstract class.
searcher.Search(new TermQuery(new Term("content", term)), firstCollector as Collector);
- IAbstractDistinctValuesCollector<IGroupCount<IComparable>> distinctValuesCollector
+ IAbstractDistinctValuesCollector<AbstractDistinctValuesCollector.IGroupCount<IComparable>> distinctValuesCollector
= CreateDistinctCountCollector(firstCollector, groupField, countField, dvType);
// LUCENENET TODO: Create an ICollector interface that we can inherit our Collector interfaces from
// so this cast is not necessary. Consider eliminating the Collector abstract class.
searcher.Search(new TermQuery(new Term("content", term)), distinctValuesCollector as Collector);
// LUCENENET TODO: Try to work out how to do this without an O(n) operation
- List<IGroupCount<IComparable>> actualResult = new List<IGroupCount<IComparable>>(distinctValuesCollector.Groups);
+ List<AbstractDistinctValuesCollector.IGroupCount<IComparable>> actualResult = new List<AbstractDistinctValuesCollector.IGroupCount<IComparable>>(distinctValuesCollector.Groups);
if (VERBOSE)
{
@@ -287,8 +287,8 @@ namespace Lucene.Net.Search.Grouping
assertEquals(expectedResult.Count, actualResult.Count);
for (int i = 0; i < expectedResult.size(); i++)
{
- IGroupCount<IComparable> expected = expectedResult[i];
- IGroupCount<IComparable> actual = actualResult[i];
+ AbstractDistinctValuesCollector.IGroupCount<IComparable> expected = expectedResult[i];
+ AbstractDistinctValuesCollector.IGroupCount<IComparable> actual = actualResult[i];
AssertValues(expected.GroupValue, actual.GroupValue);
assertEquals(expected.UniqueValues.Count(), actual.UniqueValues.Count());
List<IComparable> expectedUniqueValues = new List<IComparable>(expected.UniqueValues);
@@ -306,7 +306,7 @@ namespace Lucene.Net.Search.Grouping
}
}
- private void PrintGroups(List<IGroupCount<IComparable>> results)
+ private void PrintGroups(List<AbstractDistinctValuesCollector.IGroupCount<IComparable>> results)
{
for (int i = 0; i < results.size(); i++)
{
@@ -427,7 +427,7 @@ namespace Lucene.Net.Search.Grouping
doc.Add(valuesField);
}
- private IAbstractDistinctValuesCollector<IGroupCount<T>> CreateDistinctCountCollector<T>(IAbstractFirstPassGroupingCollector<T> firstPassGroupingCollector,
+ private IAbstractDistinctValuesCollector<AbstractDistinctValuesCollector.IGroupCount<T>> CreateDistinctCountCollector<T>(IAbstractFirstPassGroupingCollector<T> firstPassGroupingCollector,
string groupField,
string countField,
FieldInfo.DocValuesType_e? dvType)
@@ -436,11 +436,11 @@ namespace Lucene.Net.Search.Grouping
IEnumerable<ISearchGroup<T>> searchGroups = firstPassGroupingCollector.GetTopGroups(0, false);
if (typeof(FunctionFirstPassGroupingCollector).IsAssignableFrom(firstPassGroupingCollector.GetType()))
{
- return (IAbstractDistinctValuesCollector<IGroupCount<T>>)new FunctionDistinctValuesCollector(new Hashtable(), new BytesRefFieldSource(groupField), new BytesRefFieldSource(countField), searchGroups as IEnumerable<ISearchGroup<MutableValue>>);
+ return (IAbstractDistinctValuesCollector<AbstractDistinctValuesCollector.IGroupCount<T>>)new FunctionDistinctValuesCollector(new Hashtable(), new BytesRefFieldSource(groupField), new BytesRefFieldSource(countField), searchGroups as IEnumerable<ISearchGroup<MutableValue>>);
}
else
{
- return (IAbstractDistinctValuesCollector<IGroupCount<T>>)new TermDistinctValuesCollector(groupField, countField, searchGroups as IEnumerable<ISearchGroup<BytesRef>>);
+ return (IAbstractDistinctValuesCollector<AbstractDistinctValuesCollector.IGroupCount<T>>)new TermDistinctValuesCollector(groupField, countField, searchGroups as IEnumerable<ISearchGroup<BytesRef>>);
}
}
@@ -475,7 +475,7 @@ namespace Lucene.Net.Search.Grouping
}
}
- internal class GroupCount : AbstractGroupCount<BytesRef>
+ internal class GroupCount : AbstractDistinctValuesCollector.GroupCount<BytesRef>
{
internal GroupCount(BytesRef groupValue, IEnumerable<BytesRef> uniqueValues)
: base(groupValue)
@@ -484,9 +484,9 @@ namespace Lucene.Net.Search.Grouping
}
}
- private List<IGroupCount<IComparable>> CreateExpectedResult(IndexContext context, string term, Sort groupSort, int topN)
+ private List<AbstractDistinctValuesCollector.IGroupCount<IComparable>> CreateExpectedResult(IndexContext context, string term, Sort groupSort, int topN)
{
- List<IGroupCount<IComparable>> result = new List<IGroupCount<IComparable>>();
+ List<AbstractDistinctValuesCollector.IGroupCount<IComparable>> result = new List<AbstractDistinctValuesCollector.IGroupCount<IComparable>>();
IDictionary<string, ISet<string>> groupCounts = context.searchTermToGroupCounts[term];
int i = 0;
foreach (string group in groupCounts.Keys)