Lucene.Net.Core.Search.BooleanQuery: Changed GetHashCode() logic back to original from Lucene.
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/9ada11a8 Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/9ada11a8 Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/9ada11a8 Branch: refs/heads/api-work Commit: 9ada11a80c7fda2589d390d3c9f3702f82e5b27a Parents: f6c6f8a Author: Shad Storhaug <[email protected]> Authored: Sat Mar 4 04:27:45 2017 +0700 Committer: Shad Storhaug <[email protected]> Committed: Sun Mar 5 17:08:42 2017 +0700 ---------------------------------------------------------------------- src/Lucene.Net.Core/Search/BooleanQuery.cs | 11 ++++++----- src/Lucene.Net.Core/Support/ValueList.cs | 5 +++++ 2 files changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9ada11a8/src/Lucene.Net.Core/Search/BooleanQuery.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Search/BooleanQuery.cs b/src/Lucene.Net.Core/Search/BooleanQuery.cs index da596e5..cc8781f 100644 --- a/src/Lucene.Net.Core/Search/BooleanQuery.cs +++ b/src/Lucene.Net.Core/Search/BooleanQuery.cs @@ -80,7 +80,7 @@ namespace Lucene.Net.Search } } - private EquatableList<BooleanClause> clauses = new EquatableList<BooleanClause>(); + private ValueList<BooleanClause> clauses = new ValueList<BooleanClause>(); private readonly bool disableCoord; /// <summary> @@ -585,7 +585,7 @@ namespace Lucene.Net.Search public override object Clone() { BooleanQuery clone = (BooleanQuery)base.Clone(); - clone.clauses = (EquatableList<BooleanClause>)this.clauses.Clone(); + clone.clauses = (ValueList<BooleanClause>)this.clauses.Clone(); return clone; } @@ -666,16 +666,17 @@ namespace Lucene.Net.Search } BooleanQuery other = (BooleanQuery)o; return this.Boost == other.Boost - && this.clauses.SequenceEqual(other.clauses) + && this.clauses.Equals(other.clauses) && this.MinimumNumberShouldMatch == other.MinimumNumberShouldMatch && this.disableCoord == other.disableCoord; } /// <summary> /// Returns a hash code value for this object. </summary> - public override int GetHashCode() // LUCENENET TODO: Fix hashcode logic. + public override int GetHashCode() { - return Number.SingleToInt32Bits(Boost) ^ (clauses.Count == 0 ? 0 : HashHelpers.CombineHashCodes(clauses.First().GetHashCode(), clauses.Last().GetHashCode(), clauses.Count)) + MinimumNumberShouldMatch + (disableCoord ? 17 : 0); + return Number.SingleToInt32Bits(Boost) ^ clauses.GetHashCode() + + MinimumNumberShouldMatch + (disableCoord ? 17 : 0); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9ada11a8/src/Lucene.Net.Core/Support/ValueList.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Support/ValueList.cs b/src/Lucene.Net.Core/Support/ValueList.cs index 00629a8..d09874e 100644 --- a/src/Lucene.Net.Core/Support/ValueList.cs +++ b/src/Lucene.Net.Core/Support/ValueList.cs @@ -28,6 +28,11 @@ namespace Lucene.Net.Support : base(collection) { } + public object Clone() + { + return new ValueList<T>(this); + } + public override bool Equals(object obj) { if (obj == this)
