You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/09/24 13:10:19 UTC

svn commit: r1525851 - in /lucene/dev/trunk/lucene/core/src: java/org/apache/lucene/index/FreqProxTermsWriter.java test/org/apache/lucene/index/TestIndexWriter.java

Author: mikemccand
Date: Tue Sep 24 11:10:18 2013
New Revision: 1525851

URL: http://svn.apache.org/r1525851
Log:
LUCENE-5239: don't delete same term for the wrong field

Modified:
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java?rev=1525851&r1=1525850&r2=1525851&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java Tue Sep 24 11:10:18 2013
@@ -47,6 +47,8 @@ final class FreqProxTermsWriter extends 
           Terms terms = fields.terms(lastField);
           if (terms != null) {
             termsEnum = terms.iterator(termsEnum);
+          } else {
+            termsEnum = null;
           }
         }
 

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1525851&r1=1525850&r2=1525851&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Tue Sep 24 11:10:18 2013
@@ -2281,4 +2281,27 @@ public class TestIndexWriter extends Luc
     evilWriter.close();
     dir.close();
   }
+
+  // LUCENE-5239
+  public void testDeleteSameTermAcrossFields() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+    IndexWriter w = new IndexWriter(dir, iwc);
+    Document doc = new Document();
+    doc.add(new TextField("a", "foo", Field.Store.NO));
+    w.addDocument(doc);
+
+    // Should not delete the document; with LUCENE-5239 the
+    // "foo" from the 2nd delete term would incorrectly
+    // match field a's "foo":
+    w.deleteDocuments(new Term("a", "xxx"));
+    w.deleteDocuments(new Term("b", "foo"));
+    IndexReader r = w.getReader();
+    w.close();
+
+    // Make sure document was not (incorrectly) deleted:
+    assertEquals(1, r.numDocs());
+    r.close();
+    dir.close();
+  }
 }



Re: svn commit: r1525851 - in /lucene/dev/trunk/lucene/core/src: java/org/apache/lucene/index/FreqProxTermsWriter.java test/org/apache/lucene/index/TestIndexWriter.java

Posted by Michael McCandless <lu...@mikemccandless.com>.
Good idea, I just backported it.

Mike McCandless

http://blog.mikemccandless.com


On Tue, Sep 24, 2013 at 9:35 AM, Robert Muir <rc...@gmail.com> wrote:
> Can we backport this test to 4.x?
>
> On Tue, Sep 24, 2013 at 4:10 AM,  <mi...@apache.org> wrote:
>> Author: mikemccand
>> Date: Tue Sep 24 11:10:18 2013
>> New Revision: 1525851
>>
>> URL: http://svn.apache.org/r1525851
>> Log:
>> LUCENE-5239: don't delete same term for the wrong field
>>
>> Modified:
>>     lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
>>     lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
>>
>> Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
>> URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java?rev=1525851&r1=1525850&r2=1525851&view=diff
>> ==============================================================================
>> --- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java (original)
>> +++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java Tue Sep 24 11:10:18 2013
>> @@ -47,6 +47,8 @@ final class FreqProxTermsWriter extends
>>            Terms terms = fields.terms(lastField);
>>            if (terms != null) {
>>              termsEnum = terms.iterator(termsEnum);
>> +          } else {
>> +            termsEnum = null;
>>            }
>>          }
>>
>>
>> Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
>> URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1525851&r1=1525850&r2=1525851&view=diff
>> ==============================================================================
>> --- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
>> +++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Tue Sep 24 11:10:18 2013
>> @@ -2281,4 +2281,27 @@ public class TestIndexWriter extends Luc
>>      evilWriter.close();
>>      dir.close();
>>    }
>> +
>> +  // LUCENE-5239
>> +  public void testDeleteSameTermAcrossFields() throws Exception {
>> +    Directory dir = newDirectory();
>> +    IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
>> +    IndexWriter w = new IndexWriter(dir, iwc);
>> +    Document doc = new Document();
>> +    doc.add(new TextField("a", "foo", Field.Store.NO));
>> +    w.addDocument(doc);
>> +
>> +    // Should not delete the document; with LUCENE-5239 the
>> +    // "foo" from the 2nd delete term would incorrectly
>> +    // match field a's "foo":
>> +    w.deleteDocuments(new Term("a", "xxx"));
>> +    w.deleteDocuments(new Term("b", "foo"));
>> +    IndexReader r = w.getReader();
>> +    w.close();
>> +
>> +    // Make sure document was not (incorrectly) deleted:
>> +    assertEquals(1, r.numDocs());
>> +    r.close();
>> +    dir.close();
>> +  }
>>  }
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: dev-help@lucene.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Re: svn commit: r1525851 - in /lucene/dev/trunk/lucene/core/src: java/org/apache/lucene/index/FreqProxTermsWriter.java test/org/apache/lucene/index/TestIndexWriter.java

Posted by Robert Muir <rc...@gmail.com>.
Can we backport this test to 4.x?

On Tue, Sep 24, 2013 at 4:10 AM,  <mi...@apache.org> wrote:
> Author: mikemccand
> Date: Tue Sep 24 11:10:18 2013
> New Revision: 1525851
>
> URL: http://svn.apache.org/r1525851
> Log:
> LUCENE-5239: don't delete same term for the wrong field
>
> Modified:
>     lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
>     lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
>
> Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
> URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java?rev=1525851&r1=1525850&r2=1525851&view=diff
> ==============================================================================
> --- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java (original)
> +++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java Tue Sep 24 11:10:18 2013
> @@ -47,6 +47,8 @@ final class FreqProxTermsWriter extends
>            Terms terms = fields.terms(lastField);
>            if (terms != null) {
>              termsEnum = terms.iterator(termsEnum);
> +          } else {
> +            termsEnum = null;
>            }
>          }
>
>
> Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
> URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1525851&r1=1525850&r2=1525851&view=diff
> ==============================================================================
> --- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
> +++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Tue Sep 24 11:10:18 2013
> @@ -2281,4 +2281,27 @@ public class TestIndexWriter extends Luc
>      evilWriter.close();
>      dir.close();
>    }
> +
> +  // LUCENE-5239
> +  public void testDeleteSameTermAcrossFields() throws Exception {
> +    Directory dir = newDirectory();
> +    IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
> +    IndexWriter w = new IndexWriter(dir, iwc);
> +    Document doc = new Document();
> +    doc.add(new TextField("a", "foo", Field.Store.NO));
> +    w.addDocument(doc);
> +
> +    // Should not delete the document; with LUCENE-5239 the
> +    // "foo" from the 2nd delete term would incorrectly
> +    // match field a's "foo":
> +    w.deleteDocuments(new Term("a", "xxx"));
> +    w.deleteDocuments(new Term("b", "foo"));
> +    IndexReader r = w.getReader();
> +    w.close();
> +
> +    // Make sure document was not (incorrectly) deleted:
> +    assertEquals(1, r.numDocs());
> +    r.close();
> +    dir.close();
> +  }
>  }
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org