You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2010/06/24 12:17:49 UTC
svn commit: r957490 - in /lucene/dev/branches/branch_3x/lucene: CHANGES.txt
src/java/org/apache/lucene/search/FieldCacheImpl.java
src/test/org/apache/lucene/search/TestSort.java
Author: uschindler
Date: Thu Jun 24 10:17:48 2010
New Revision: 957490
URL: http://svn.apache.org/viewvc?rev=957490&view=rev
Log:
LUCENE-2142 (correct fix): FieldCacheImpl.getStringIndex no longer throws an exception when term count exceeds doc count
Modified:
lucene/dev/branches/branch_3x/lucene/CHANGES.txt
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestSort.java
Modified: lucene/dev/branches/branch_3x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/CHANGES.txt?rev=957490&r1=957489&r2=957490&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_3x/lucene/CHANGES.txt Thu Jun 24 10:17:48 2010
@@ -200,6 +200,10 @@ Bug fixes
a prior (corrupt) index missing its segments_N file. (Mike
McCandless)
+* LUCENE-2142 (correct fix): FieldCacheImpl.getStringIndex no longer
+ throws an exception when term count exceeds doc count.
+ (Mike McCandless, Uwe Schindler)
+
New features
* LUCENE-2128: Parallelized fetching document frequencies during weight
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java?rev=957490&r1=957489&r2=957490&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java Thu Jun 24 10:17:48 2010
@@ -634,7 +634,7 @@ class FieldCacheImpl implements FieldCac
try {
do {
Term term = termEnum.term();
- if (term==null || term.field() != field) break;
+ if (term==null || term.field() != field || t >= mterms.length) break;
// store term text
mterms[t] = term.text();
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestSort.java?rev=957490&r1=957489&r2=957490&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestSort.java Thu Jun 24 10:17:48 2010
@@ -1013,4 +1013,24 @@ public class TestSort extends LuceneTest
}
}
+ public void testLUCENE2142() throws IOException {
+ RAMDirectory indexStore = new RAMDirectory ();
+ IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(
+ TEST_VERSION_CURRENT, new SimpleAnalyzer(
+ TEST_VERSION_CURRENT)));
+ for (int i=0; i<5; i++) {
+ Document doc = new Document();
+ doc.add (new Field ("string", "a"+i, Field.Store.NO, Field.Index.NOT_ANALYZED));
+ doc.add (new Field ("string", "b"+i, Field.Store.NO, Field.Index.NOT_ANALYZED));
+ writer.addDocument (doc);
+ }
+ writer.optimize(); // enforce one segment to have a higher unique term count in all cases
+ writer.close();
+ sort.setSort(
+ new SortField("string", SortField.STRING),
+ SortField.FIELD_DOC );
+ // this should not throw AIOOBE or RuntimeEx
+ new IndexSearcher (indexStore, true).search(new MatchAllDocsQuery(), null, 500, sort);
+ }
+
}