Yes, this is a mistake. Let me fix this.

On Thu, Jun 8, 2017 at 1:16 PM Alan Woodward <a...@flax.co.uk> wrote:

> There’s a few unrelated edits to CHANGES.txt here which I think might be a
> mistake?
>
> > On 8 Jun 2017, at 11:23, m...@apache.org wrote:
> >
> > Repository: lucene-solr
> > Updated Branches:
> >  refs/heads/branch_6_6 0238eeef2 -> 703053094
> >
> >
> > LUCENE-7869: Changed MemoryIndex to sort 1d points.
> >
> > In case of 1d points, the PointInSetQuery.MergePointVisitor expects that
> these points are visited in ascending order.
> > Prior to this change the memory index doesn't do this and this can
> result in document with multiple points that should match to not match.
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
> > Commit:
> http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/70305309
> > Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/70305309
> > Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/70305309
> >
> > Branch: refs/heads/branch_6_6
> > Commit: 70305309471e906c8f64e4203aba475445278938
> > Parents: 0238eee
> > Author: Martijn van Groningen <martijn.v.gronin...@gmail.com>
> > Authored: Wed Jun 7 19:55:32 2017 +0200
> > Committer: Martijn van Groningen <martijn.v.gronin...@gmail.com>
> > Committed: Thu Jun 8 12:15:30 2017 +0200
> >
> > ----------------------------------------------------------------------
> > lucene/CHANGES.txt                              | 29 +++++-----------
> > .../apache/lucene/index/memory/MemoryIndex.java | 35 ++++++++++++--------
> > .../lucene/index/memory/TestMemoryIndex.java    | 24 ++++++++++++++
> > 3 files changed, 54 insertions(+), 34 deletions(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/70305309/lucene/CHANGES.txt
> > ----------------------------------------------------------------------
> > diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
> > index f1bddde..1dfebfe 100644
> > --- a/lucene/CHANGES.txt
> > +++ b/lucene/CHANGES.txt
> > @@ -4,7 +4,12 @@ For more information on past and future Lucene
> versions, please see:
> > http://s.apache.org/luceneversions
> >
> > ======================= Lucene 6.6.1 =======================
> > -(No Changes)
> > +
> > +Bug Fixes
> > +
> > +* LUCENE-7869: Changed MemoryIndex to sort 1d points. In case of 1d
> points, the PointInSetQuery.MergePointVisitor expects
> > +  that these points are visited in ascending order. The memory index
> doesn't do this and this can result in document
> > +  with multiple points that should match to not match. (Martijn van
> Groningen)
> >
> > ======================= Lucene 6.6.0 =======================
> >
> > @@ -102,9 +107,6 @@ Other
> > * LUCENE-7761: Fixed comment in ReqExclScorer.
> >   (Pablo Pita Leira via Adrien Grand)
> >
> > -* LUCENE-7815: Deprecate the PostingsHighlighter. It evolved into the
> > -  UnifiedHighlighter. (David Smiley)
> > -
> > ======================= Lucene 6.5.1 =======================
> >
> > Bug Fixes
> > @@ -118,9 +120,6 @@ Bug Fixes
> > * LUCENE-7769: The UnifiedHighligter wasn't highlighting portions of the
> query
> >   wrapped in BoostQuery or SpanBoostQuery. (David Smiley, Dmitry Malinin)
> >
> > -* LUCENE-7791: Fixed index sorting to work with sparse numeric and
> binary docvalues field.
> > -  (Przemyslaw Szeremiota via Jim Ferenczi)
> > -
> > Other
> >
> > * LUCENE-7763: Remove outdated comment in IndexWriterConfig.setIndexSort
> javadocs.
> > @@ -170,16 +169,15 @@ API Changes
> >   instead of once all shard responses are present. (Simon Willnauer,
> >   Mike McCandless)
> >
> > -* LUCENE-6819: Index-time boosts are deprecated. As a replacement,
> index-time
> > -  scoring factors should be indexed into a doc value field and combined
> at
> > -  query time using eg. FunctionScoreQuery. (Adrien Grand)
> > -
> > * LUCENE-7700: A cleanup of merge throughput control logic. Refactored
> all the
> >   code previously scattered throughout the IndexWriter and
> >   ConcurrentMergeScheduler into a more accessible set of public methods
> (see
> >   MergePolicy.OneMergeProgress, MergeScheduler.wrapForMerge and
> >   OneMerge.mergeInit). (Dawid Weiss, Mike McCandless).
> >
> > +* LUCENE-7734: FieldType's copy constructor was widened to accept any
> IndexableFieldType.
> > +  (David Smiley)
> > +
> > New Features
> >
> > * LUCENE-7738: Add new InetAddressRange for indexing and querying
> InetAddress
> > @@ -343,10 +341,6 @@ Other
> > * LUCENE-7658: queryparser/xml CoreParser now implements
> SpanQueryBuilder interface.
> >   (Daniel Collins, Christine Poerschke)
> >
> > -* LUCENE-7664: GeoPointField and its queries are deprecated in favor
> > -  of LatLonPoint, which offers faster indexing and searching
> > -  performance, smaller index, and less search-time heap usage.  (Mike
> McCandless)
> > -
> > * LUCENE-7715: NearSpansUnordered simplifications.
> >   (Paul Elschot via Adrien Grand)
> >
> > @@ -567,11 +561,6 @@ Optimizations
> >
> > * LUCENE-7572: Doc values queries now cache their hash code. (Adrien
> Grand)
> >
> > -* LUCENE-7579: Segments are now also sorted during flush, and merging
> > -  on a sorted index is substantially faster by using some of the same
> > -  bulk merge optimizations that non-sorted merging uses (Jim Ferenczi
> > -  via Mike McCandless)
> > -
> > Other
> >
> > * LUCENE-7546: Fixed references to benchmark wikipedia data and the
> Jenkins line-docs file
> >
> >
> http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/70305309/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
> > ----------------------------------------------------------------------
> > diff --git
> a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
> b/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
> > index a1390b3..c8a4523 100644
> > ---
> a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
> > +++
> b/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
> > @@ -929,20 +929,27 @@ public class MemoryIndex {
> >
> >           final int numDimensions = fieldInfo.getPointDimensionCount();
> >           final int numBytesPerDimension = fieldInfo.getPointNumBytes();
> > -          minPackedValue = pointValues[0].bytes.clone();
> > -          maxPackedValue = pointValues[0].bytes.clone();
> > -
> > -          for (int i = 0; i < pointValuesCount; i++) {
> > -            BytesRef pointValue = pointValues[i];
> > -            assert pointValue.bytes.length == pointValue.length :
> "BytesRef should wrap a precise byte[], BytesRef.deepCopyOf() should take
> care of this";
> > -
> > -            for (int dim = 0; dim < numDimensions; ++dim) {
> > -              int offset = dim * numBytesPerDimension;
> > -              if (StringHelper.compare(numBytesPerDimension,
> pointValue.bytes, offset, minPackedValue, offset) < 0) {
> > -                System.arraycopy(pointValue.bytes, offset,
> minPackedValue, offset, numBytesPerDimension);
> > -              }
> > -              if (StringHelper.compare(numBytesPerDimension,
> pointValue.bytes, offset, maxPackedValue, offset) > 0) {
> > -                System.arraycopy(pointValue.bytes, offset,
> maxPackedValue, offset, numBytesPerDimension);
> > +          if (numDimensions == 1) {
> > +            // PointInSetQuery.MergePointVisitor expects values to be
> visited in increasing order,
> > +            // this is a 1d optimization which has to be done here too.
> Otherwise we emit values
> > +            // out of order which causes mismatches.
> > +            Arrays.sort(pointValues, 0, pointValuesCount);
> > +            minPackedValue = pointValues[0].bytes.clone();
> > +            maxPackedValue = pointValues[pointValuesCount -
> 1].bytes.clone();
> > +          } else {
> > +            minPackedValue = pointValues[0].bytes.clone();
> > +            maxPackedValue = pointValues[0].bytes.clone();
> > +            for (int i = 0; i < pointValuesCount; i++) {
> > +              BytesRef pointValue = pointValues[i];
> > +              assert pointValue.bytes.length == pointValue.length :
> "BytesRef should wrap a precise byte[], BytesRef.deepCopyOf() should take
> care of this";
> > +              for (int dim = 0; dim < numDimensions; ++dim) {
> > +                int offset = dim * numBytesPerDimension;
> > +                if (StringHelper.compare(numBytesPerDimension,
> pointValue.bytes, offset, minPackedValue, offset) < 0) {
> > +                  System.arraycopy(pointValue.bytes, offset,
> minPackedValue, offset, numBytesPerDimension);
> > +                }
> > +                if (StringHelper.compare(numBytesPerDimension,
> pointValue.bytes, offset, maxPackedValue, offset) > 0) {
> > +                  System.arraycopy(pointValue.bytes, offset,
> maxPackedValue, offset, numBytesPerDimension);
> > +                }
> >               }
> >             }
> >           }
> >
> >
> http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/70305309/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
> > ----------------------------------------------------------------------
> > diff --git
> a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
> b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
> > index 75344e3..8df1afb 100644
> > ---
> a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
> > +++
> b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
> > @@ -476,6 +476,30 @@ public class TestMemoryIndex extends LuceneTestCase
> {
> >     assertEquals(1, s.count(DoublePoint.newRangeQuery("doubles", new
> double[] {10D, 10D}, new double[] {30D, 30D})));
> >   }
> >
> > +  public void testMultiValuedPointsSortedCorrectly() throws Exception {
> > +    Document doc = new Document();
> > +    doc.add(new IntPoint("ints", 3));
> > +    doc.add(new IntPoint("ints", 2));
> > +    doc.add(new IntPoint("ints", 1));
> > +    doc.add(new LongPoint("longs", 3L));
> > +    doc.add(new LongPoint("longs", 2L));
> > +    doc.add(new LongPoint("longs", 1L));
> > +    doc.add(new FloatPoint("floats", 3F));
> > +    doc.add(new FloatPoint("floats", 2F));
> > +    doc.add(new FloatPoint("floats", 1F));
> > +    doc.add(new DoublePoint("doubles", 3D));
> > +    doc.add(new DoublePoint("doubles", 2D));
> > +    doc.add(new DoublePoint("doubles", 1D));
> > +
> > +    MemoryIndex mi = MemoryIndex.fromDocument(doc, analyzer);
> > +    IndexSearcher s = mi.createSearcher();
> > +
> > +    assertEquals(1, s.count(IntPoint.newSetQuery("ints", 2)));
> > +    assertEquals(1, s.count(LongPoint.newSetQuery("longs", 2)));
> > +    assertEquals(1, s.count(FloatPoint.newSetQuery("floats", 2)));
> > +    assertEquals(1, s.count(DoublePoint.newSetQuery("doubles", 2)));
> > +  }
> > +
> >   public void testIndexingPointsAndDocValues() throws Exception {
> >     FieldType type = new FieldType();
> >     type.setDimensions(1, 4);
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: dev-h...@lucene.apache.org
>
>

Reply via email to