lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nightowl...@apache.org
Subject [16/27] lucenenet git commit: Lucene.Net.Core.Search.Spans.SpanOrQuery: Changed clauses from IList<SpanQuery> to ValueList<SpanQuery> to ensure Equals() and GetHashCode() consider all clauses when comparing.
Date Thu, 02 Mar 2017 01:10:59 GMT
Lucene.Net.Core.Search.Spans.SpanOrQuery: Changed clauses from IList<SpanQuery> to ValueList<SpanQuery>
to ensure Equals() and GetHashCode() consider all clauses when comparing.


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/fc22adbb
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/fc22adbb
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/fc22adbb

Branch: refs/heads/api-work
Commit: fc22adbbb16c651eb91ca1b767f9b2a424f98400
Parents: beab698
Author: Shad Storhaug <shad@shadstorhaug.com>
Authored: Thu Mar 2 00:15:17 2017 +0700
Committer: Shad Storhaug <shad@shadstorhaug.com>
Committed: Thu Mar 2 08:08:52 2017 +0700

----------------------------------------------------------------------
 src/Lucene.Net.Core/Search/Spans/SpanOrQuery.cs | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/fc22adbb/src/Lucene.Net.Core/Search/Spans/SpanOrQuery.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Search/Spans/SpanOrQuery.cs b/src/Lucene.Net.Core/Search/Spans/SpanOrQuery.cs
index 5e1e005..886e8ab 100644
--- a/src/Lucene.Net.Core/Search/Spans/SpanOrQuery.cs
+++ b/src/Lucene.Net.Core/Search/Spans/SpanOrQuery.cs
@@ -33,7 +33,9 @@ namespace Lucene.Net.Search.Spans
     /// Matches the union of its clauses. </summary>
     public class SpanOrQuery : SpanQuery
     {
-        private readonly IList<SpanQuery> clauses;
+        // LUCENENET NOTE: The hash code needs to be made from the hash codes of all elements.

+        // So, we force all subclasses to use ValueList<SpanQuery> instead of IList<SpanQuery>
to ensure that logic is in place.
+        private readonly ValueList<SpanQuery> clauses;
         private string field;
 
         /// <summary>
@@ -41,7 +43,7 @@ namespace Lucene.Net.Search.Spans
         public SpanOrQuery(params SpanQuery[] clauses)
         {
             // copy clauses array into an ArrayList
-            this.clauses = new List<SpanQuery>(clauses.Length);
+            this.clauses = new ValueList<SpanQuery>(clauses.Length);
             for (int i = 0; i < clauses.Length; i++)
             {
                 AddClause(clauses[i]);
@@ -157,7 +159,7 @@ namespace Lucene.Net.Search.Spans
 
             SpanOrQuery that = (SpanOrQuery)o;
 
-            if (!clauses.SequenceEqual(that.clauses))
+            if (!clauses.Equals(that.clauses))
             {
                 return false;
             }
@@ -168,7 +170,7 @@ namespace Lucene.Net.Search.Spans
         public override int GetHashCode()
         {
             //If this doesn't work, hash all elemnts together instead. This version was used
to reduce time complexity
-            int h = clauses.Count == 0 ? 0 : HashHelpers.CombineHashCodes(clauses.First().GetHashCode(),
clauses.Last().GetHashCode(), clauses.Count);
+            int h = clauses.GetHashCode();
             h ^= (h << 10) | ((int)(((uint)h) >> 23));
             h ^= Number.SingleToRawInt32Bits(Boost);
             return h;


Mime
View raw message