You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/05/23 13:43:05 UTC
svn commit: r1126449 [2/2] - in /lucene/dev/branches/docvalues: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/maven/
dev-tools/maven/lucene/contrib/
dev-tools/maven/solr/contrib/dataimporthandler/src/
dev-tools/maven/solr/src/ dev-tools/maven/s...
Modified: lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockAnalyzer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockAnalyzer.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockAnalyzer.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockAnalyzer.java Mon May 23 11:43:03 2011
@@ -27,6 +27,19 @@ import org.apache.lucene.util.automaton.
/**
* Analyzer for testing
+ * <p>
+ * This analyzer is a replacement for Whitespace/Simple/KeywordAnalyzers
+ * for unit tests. If you are testing a custom component such as a queryparser
+ * or analyzer-wrapper that consumes analysis streams, its a great idea to test
+ * it with this analyzer instead. MockAnalyzer has the following behavior:
+ * <ul>
+ * <li>By default, the assertions in {@link MockTokenizer} are turned on for extra
+ * checks that the consumer is consuming properly. These checks can be disabled
+ * with {@link #setEnableChecks(boolean)}.
+ * <li>Payload data is randomly injected into the stream for more thorough testing
+ * of payloads.
+ * </ul>
+ * @see MockTokenizer
*/
public final class MockAnalyzer extends Analyzer {
private final CharacterRunAutomaton runAutomaton;
Modified: lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockTokenizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockTokenizer.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockTokenizer.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/analysis/MockTokenizer.java Mon May 23 11:43:03 2011
@@ -22,11 +22,21 @@ import java.io.Reader;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
+import org.apache.lucene.util.AttributeSource.AttributeFactory;
import org.apache.lucene.util.automaton.CharacterRunAutomaton;
import org.apache.lucene.util.automaton.RegExp;
/**
- * Automaton-based tokenizer for testing. Optionally lowercases.
+ * Tokenizer for testing.
+ * <p>
+ * This tokenizer is a replacement for {@link #WHITESPACE}, {@link #SIMPLE}, and {@link #KEYWORD}
+ * tokenizers. If you are writing a component such as a TokenFilter, its a great idea to test
+ * it wrapping this tokenizer instead for extra checks. This tokenizer has the following behavior:
+ * <ul>
+ * <li>An internal state-machine is used for checking consumer consistency. These checks can
+ * be disabled with {@link #setEnableChecks(boolean)}.
+ * <li>For convenience, optionally lowercases terms that it outputs.
+ * </ul>
*/
public class MockTokenizer extends Tokenizer {
/** Acts Similar to WhitespaceTokenizer */
@@ -44,6 +54,8 @@ public class MockTokenizer extends Token
private final CharacterRunAutomaton runAutomaton;
private final boolean lowerCase;
+ private final int maxTokenLength;
+ public static final int DEFAULT_MAX_TOKEN_LENGTH = Integer.MAX_VALUE;
private int state;
private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
@@ -65,20 +77,21 @@ public class MockTokenizer extends Token
private State streamState = State.CLOSE;
private boolean enableChecks = true;
- public MockTokenizer(AttributeFactory factory, Reader input, CharacterRunAutomaton runAutomaton, boolean lowerCase) {
+ public MockTokenizer(AttributeFactory factory, Reader input, CharacterRunAutomaton runAutomaton, boolean lowerCase, int maxTokenLength) {
super(factory, input);
this.runAutomaton = runAutomaton;
this.lowerCase = lowerCase;
this.state = runAutomaton.getInitialState();
this.streamState = State.SETREADER;
+ this.maxTokenLength = maxTokenLength;
+ }
+
+ public MockTokenizer(Reader input, CharacterRunAutomaton runAutomaton, boolean lowerCase, int maxTokenLength) {
+ this(AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY, input, runAutomaton, lowerCase, maxTokenLength);
}
public MockTokenizer(Reader input, CharacterRunAutomaton runAutomaton, boolean lowerCase) {
- super(input);
- this.runAutomaton = runAutomaton;
- this.lowerCase = lowerCase;
- this.state = runAutomaton.getInitialState();
- this.streamState = State.SETREADER;
+ this(input, runAutomaton, lowerCase, DEFAULT_MAX_TOKEN_LENGTH);
}
@Override
@@ -98,6 +111,9 @@ public class MockTokenizer extends Token
for (int i = 0; i < chars.length; i++)
termAtt.append(chars[i]);
endOffset = off;
+ if (termAtt.length() >= maxTokenLength) {
+ break;
+ }
cp = readCodePoint();
} while (cp >= 0 && isTokenChar(cp));
offsetAtt.setOffset(correctOffset(startOffset), correctOffset(endOffset));
Modified: lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/index/codecs/mockrandom/MockRandomCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/index/codecs/mockrandom/MockRandomCodec.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/index/codecs/mockrandom/MockRandomCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/index/codecs/mockrandom/MockRandomCodec.java Mon May 23 11:43:03 2011
@@ -202,7 +202,7 @@ public class MockRandomCodec extends Cod
@Override
public boolean isIndexTerm(BytesRef term, TermStats stats) {
- return rand.nextInt(gap) == 17;
+ return rand.nextInt(gap) == gap/2;
}
@Override
Modified: lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/store/MockDirectoryWrapper.java Mon May 23 11:43:03 2011
@@ -560,12 +560,6 @@ public class MockDirectoryWrapper extend
}
@Override
- public synchronized void touchFile(String name) throws IOException {
- maybeYield();
- delegate.touchFile(name);
- }
-
- @Override
public synchronized long fileLength(String name) throws IOException {
maybeYield();
return delegate.fileLength(name);
Modified: lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java Mon May 23 11:43:03 2011
@@ -66,6 +66,8 @@ import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runner.manipulation.Filter;
import org.junit.runner.manipulation.NoTestsRemainException;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
@@ -1145,6 +1147,7 @@ public abstract class LuceneTestCase ext
* with one that returns null for getSequentialSubReaders.
*/
public static IndexSearcher newSearcher(IndexReader r, boolean maybeWrap) throws IOException {
+
if (random.nextBoolean()) {
if (maybeWrap && random.nextBoolean()) {
return new IndexSearcher(new SlowMultiReaderWrapper(r));
@@ -1296,17 +1299,25 @@ public abstract class LuceneTestCase ext
}
// only print iteration info if the user requested more than one iterations
- boolean verbose = VERBOSE && TEST_ITER > 1;
+ final boolean verbose = VERBOSE && TEST_ITER > 1;
+
+ final int currentIter[] = new int[1];
+ arg1.addListener(new RunListener() {
+ @Override
+ public void testFailure(Failure failure) throws Exception {
+ if (verbose) {
+ System.out.println("\nNOTE: iteration " + currentIter[0] + " failed! ");
+ }
+ }
+ });
for (int i = 0; i < TEST_ITER; i++) {
+ currentIter[0] = i;
if (verbose) {
System.out.println("\nNOTE: running iter=" + (1+i) + " of " + TEST_ITER);
}
super.runChild(arg0, arg1);
if (testsFailed) {
- if (i >= TEST_ITER_MIN - 1) {
- if (verbose) {
- System.out.println("\nNOTE: iteration " + i + " failed !");
- }
+ if (i >= TEST_ITER_MIN - 1) { // XXX is this still off-by-one?
break;
}
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/analysis/TestToken.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/analysis/TestToken.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/analysis/TestToken.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/analysis/TestToken.java Mon May 23 11:43:03 2011
@@ -225,7 +225,7 @@ public class TestToken extends LuceneTes
}
public void testTokenAttributeFactory() throws Exception {
- TokenStream ts = new MockTokenizer(Token.TOKEN_ATTRIBUTE_FACTORY, new StringReader("foo bar"), MockTokenizer.WHITESPACE, false);
+ TokenStream ts = new MockTokenizer(Token.TOKEN_ATTRIBUTE_FACTORY, new StringReader("foo bar"), MockTokenizer.WHITESPACE, false, MockTokenizer.DEFAULT_MAX_TOKEN_LENGTH);
assertTrue("SenselessAttribute is not implemented by SenselessAttributeImpl",
ts.addAttribute(SenselessAttribute.class) instanceof SenselessAttributeImpl);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java Mon May 23 11:43:03 2011
@@ -411,10 +411,6 @@ public class TestFieldsReader extends Lu
return fsDir.fileModified(name);
}
@Override
- public void touchFile(String name) throws IOException {
- fsDir.touchFile(name);
- }
- @Override
public void deleteFile(String name) throws IOException {
fsDir.deleteFile(name);
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java Mon May 23 11:43:03 2011
@@ -17,7 +17,7 @@ package org.apache.lucene.index;
* limitations under the License.
*/
-import org.apache.lucene.index.SegmentReader.Norm;
+import org.apache.lucene.index.SegmentNorms;
import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -338,7 +338,7 @@ public class TestIndexReaderClone extend
origSegmentReader.close();
assertDelDocsRefCountEquals(1, origSegmentReader);
// check the norm refs
- Norm norm = clonedSegmentReader.norms.get("field1");
+ SegmentNorms norm = clonedSegmentReader.norms.get("field1");
assertEquals(1, norm.bytesRef().get());
clonedSegmentReader.close();
dir1.close();
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java Mon May 23 11:43:03 2011
@@ -29,7 +29,7 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.index.SegmentReader.Norm;
+import org.apache.lucene.index.SegmentNorms;
import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.DefaultSimilarityProvider;
import org.apache.lucene.search.Similarity;
@@ -184,7 +184,7 @@ public class TestIndexReaderCloneNorms e
TestIndexReaderReopen.createIndex(random, dir1, false);
SegmentReader reader1 = getOnlySegmentReader(IndexReader.open(dir1, false));
reader1.norms("field1");
- Norm r1norm = reader1.norms.get("field1");
+ SegmentNorms r1norm = reader1.norms.get("field1");
AtomicInteger r1BytesRef = r1norm.bytesRef();
SegmentReader reader2 = (SegmentReader)reader1.clone();
assertEquals(2, r1norm.bytesRef().get());
@@ -203,14 +203,14 @@ public class TestIndexReaderCloneNorms e
IndexReader reader2C = (IndexReader) reader1.clone();
SegmentReader segmentReader2C = getOnlySegmentReader(reader2C);
segmentReader2C.norms("field1"); // load the norms for the field
- Norm reader2CNorm = segmentReader2C.norms.get("field1");
+ SegmentNorms reader2CNorm = segmentReader2C.norms.get("field1");
assertTrue("reader2CNorm.bytesRef()=" + reader2CNorm.bytesRef(), reader2CNorm.bytesRef().get() == 2);
IndexReader reader3C = (IndexReader) reader2C.clone();
SegmentReader segmentReader3C = getOnlySegmentReader(reader3C);
- Norm reader3CCNorm = segmentReader3C.norms.get("field1");
+ SegmentNorms reader3CCNorm = segmentReader3C.norms.get("field1");
assertEquals(3, reader3CCNorm.bytesRef().get());
// edit a norm and the refcount should be 1
@@ -231,13 +231,13 @@ public class TestIndexReaderCloneNorms e
// norm values should be different
assertTrue(sim.decodeNormValue(segmentReader3C.norms("field1")[5])
!= sim.decodeNormValue(segmentReader4C.norms("field1")[5]));
- Norm reader4CCNorm = segmentReader4C.norms.get("field1");
+ SegmentNorms reader4CCNorm = segmentReader4C.norms.get("field1");
assertEquals(3, reader3CCNorm.bytesRef().get());
assertEquals(1, reader4CCNorm.bytesRef().get());
IndexReader reader5C = (IndexReader) reader4C.clone();
SegmentReader segmentReader5C = getOnlySegmentReader(reader5C);
- Norm reader5CCNorm = segmentReader5C.norms.get("field1");
+ SegmentNorms reader5CCNorm = segmentReader5C.norms.get("field1");
reader5C.setNorm(5, "field1", sim.encodeNormValue(0.7f));
assertEquals(1, reader5CCNorm.bytesRef().get());
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java Mon May 23 11:43:03 2011
@@ -1045,11 +1045,11 @@ public class TestIndexWriter extends Luc
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).
setOpenMode(OpenMode.CREATE).
setMaxBufferedDocs(2).
- setMergePolicy(newLogMergePolicy(101))
+ setMergePolicy(newLogMergePolicy(51))
);
Document doc = new Document();
doc.add(newField("field", "aaa", Store.YES, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS));
- for(int i=0;i<200;i++)
+ for(int i=0;i<100;i++)
writer.addDocument(doc);
writer.optimize(false);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java Mon May 23 11:43:03 2011
@@ -71,6 +71,21 @@ public class TestNRTThreads extends Luce
final File tempDir = _TestUtil.getTempDir("nrtopenfiles");
final MockDirectoryWrapper dir = new MockDirectoryWrapper(random, FSDirectory.open(tempDir));
final IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random));
+
+ if (LuceneTestCase.TEST_NIGHTLY) {
+ // newIWConfig makes smallish max seg size, which
+ // results in tons and tons of segments for this test
+ // when run nightly:
+ MergePolicy mp = conf.getMergePolicy();
+ if (mp instanceof TieredMergePolicy) {
+ ((TieredMergePolicy) mp).setMaxMergedSegmentMB(5000.);
+ } else if (mp instanceof LogByteSizeMergePolicy) {
+ ((LogByteSizeMergePolicy) mp).setMaxMergeMB(1000.);
+ } else if (mp instanceof LogMergePolicy) {
+ ((LogMergePolicy) mp).setMaxMergeDocs(100000);
+ }
+ }
+
conf.setMergedSegmentWarmer(new IndexWriter.IndexReaderWarmer() {
@Override
public void warm(IndexReader reader) throws IOException {
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/index.32.cfs.zip
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/index.32.cfs.zip?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/index.32.nocfs.zip
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/index.32.nocfs.zip?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestCachingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestCachingCollector.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestCachingCollector.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestCachingCollector.java Mon May 23 11:43:03 2011
@@ -171,5 +171,18 @@ public class TestCachingCollector extend
assertFalse(cc.isCached());
}
}
+
+ public void testNoWrappedCollector() throws Exception {
+ for (boolean cacheScores : new boolean[] { false, true }) {
+ // create w/ null wrapped collector, and test that the methods work
+ CachingCollector cc = CachingCollector.create(true, cacheScores, 50 * ONE_BYTE);
+ cc.setNextReader(null);
+ cc.setScorer(new MockScorer());
+ cc.collect(0);
+
+ assertTrue(cc.isCached());
+ cc.replay(new NoOpCollector(true));
+ }
+ }
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java Mon May 23 11:43:03 2011
@@ -345,12 +345,6 @@ public class TestBufferedIndexInput exte
dir.deleteFile(name);
}
@Override
- public void touchFile(String name)
- throws IOException
- {
- dir.touchFile(name);
- }
- @Override
public long fileModified(String name)
throws IOException
{
Modified: lucene/dev/branches/docvalues/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html (original)
+++ lucene/dev/branches/docvalues/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html Mon May 23 11:43:03 2011
@@ -68,7 +68,7 @@ field fall into a single group.</p>
<p>Typical usage looks like this (using the {@link org.apache.lucene.search.CachingCollector}):</p>
-<pre>
+<pre class="prettyprint">
FirstPassGroupingCollector c1 = new FirstPassGroupingCollector("author", groupSort, groupOffset+topNGroups);
boolean cacheScores = true;
Modified: lucene/dev/branches/docvalues/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java (original)
+++ lucene/dev/branches/docvalues/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java Mon May 23 11:43:03 2011
@@ -445,27 +445,54 @@ public class TestGrouping extends Lucene
final FirstPassGroupingCollector c1 = new FirstPassGroupingCollector("group", groupSort, groupOffset+topNGroups);
final CachingCollector cCache;
final Collector c;
+
+ final boolean useWrappingCollector = random.nextBoolean();
+
if (doCache) {
final double maxCacheMB = random.nextDouble();
if (VERBOSE) {
System.out.println("TEST: maxCacheMB=" + maxCacheMB);
}
- if (doAllGroups) {
- cCache = CachingCollector.create(c1, true, maxCacheMB);
- c = MultiCollector.wrap(cCache, allGroupsCollector);
+ if (useWrappingCollector) {
+ if (doAllGroups) {
+ cCache = CachingCollector.create(c1, true, maxCacheMB);
+ c = MultiCollector.wrap(cCache, allGroupsCollector);
+ } else {
+ c = cCache = CachingCollector.create(c1, true, maxCacheMB);
+ }
} else {
- c = cCache = CachingCollector.create(c1, true, maxCacheMB);
+ // Collect only into cache, then replay multiple times:
+ c = cCache = CachingCollector.create(false, true, maxCacheMB);
}
- } else if (doAllGroups) {
- c = MultiCollector.wrap(c1, allGroupsCollector);
- cCache = null;
} else {
- c = c1;
cCache = null;
+ if (doAllGroups) {
+ c = MultiCollector.wrap(c1, allGroupsCollector);
+ } else {
+ c = c1;
+ }
}
+
s.search(new TermQuery(new Term("content", searchTerm)), c);
+ if (doCache && !useWrappingCollector) {
+ if (cCache.isCached()) {
+ // Replay for first-pass grouping
+ cCache.replay(c1);
+ if (doAllGroups) {
+ // Replay for all groups:
+ cCache.replay(allGroupsCollector);
+ }
+ } else {
+ // Replay by re-running search:
+ s.search(new TermQuery(new Term("content", searchTerm)), c1);
+ if (doAllGroups) {
+ s.search(new TermQuery(new Term("content", searchTerm)), allGroupsCollector);
+ }
+ }
+ }
+
final Collection<SearchGroup> topGroups = c1.getTopGroups(groupOffset, fillFields);
final TopGroups groupsResult;
Modified: lucene/dev/branches/docvalues/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/CHANGES.txt?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/CHANGES.txt (original)
+++ lucene/dev/branches/docvalues/solr/CHANGES.txt Mon May 23 11:43:03 2011
@@ -340,6 +340,9 @@ Other Changes
* SOLR-2105: Rename RequestHandler param 'update.processor' to 'update.chain'.
(Jan Høydahl via Mark Miller)
+* SOLR-2528: Remove default="true" from HtmlEncoder in example solrconfig.xml,
+ because html encoding confuses non-ascii users. (koji)
+
Build
----------------------
Modified: lucene/dev/branches/docvalues/solr/example/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/example/solr/conf/solrconfig.xml?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/example/solr/conf/solrconfig.xml (original)
+++ lucene/dev/branches/docvalues/solr/example/solr/conf/solrconfig.xml Mon May 23 11:43:03 2011
@@ -1376,7 +1376,6 @@
<!-- Configure the standard encoder -->
<encoder name="html"
- default="true"
class="solr.highlight.HtmlEncoder" />
<!-- Configure the standard fragListBuilder -->
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java Mon May 23 11:43:03 2011
@@ -656,7 +656,6 @@ public class SimpleFacets {
}
}
- Term template = new Term(field);
DocsEnum docsEnum = null;
CharArr spare = new CharArr();
@@ -676,10 +675,6 @@ public class SimpleFacets {
if (df >= minDfFilterCache) {
// use the filter cache
- // TODO: need a term query that takes a BytesRef to handle binary terms
- spare.reset();
- ByteUtils.UTF8toUTF16(term, spare);
- Term t = template.createTerm(spare.toString());
if (deState==null) {
deState = new SolrIndexSearcher.DocsEnumState();
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/response/XMLWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/response/XMLWriter.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/response/XMLWriter.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/response/XMLWriter.java Mon May 23 11:43:03 2011
@@ -19,9 +19,7 @@ package org.apache.solr.response;
import java.io.IOException;
import java.io.Writer;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -32,11 +30,13 @@ import org.apache.solr.common.params.Com
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.XML;
import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.ReturnFields;
-public final class XMLWriter extends TextResponseWriter {
+/**
+ * @lucene.internal
+ */
+public class XMLWriter extends TextResponseWriter {
public static float CURRENT_VERSION=2.2f;
@@ -54,13 +54,8 @@ public final class XMLWriter extends Tex
private static final char[] XML_START2_NOSCHEMA=("<response>\n").toCharArray();
- private boolean defaultIndent=false;
final int version;
- // temporary working objects...
- // be careful not to use these recursively...
- private final ArrayList tlst = new ArrayList();
-
public static void writeResponse(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
XMLWriter xmlWriter = null;
try {
@@ -106,7 +101,7 @@ public final class XMLWriter extends Tex
writer.write(XML_START2_NOSCHEMA);
// dump response values
- NamedList lst = rsp.getValues();
+ NamedList<?> lst = rsp.getValues();
Boolean omitHeader = req.getParams().getBool(CommonParams.OMIT_HEADER);
if(omitHeader != null && omitHeader) lst.remove("responseHeader");
int sz = lst.size();
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java?rev=1126449&r1=1126448&r2=1126449&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java Mon May 23 11:43:03 2011
@@ -37,6 +37,7 @@ import org.apache.solr.client.solrj.requ
import org.apache.solr.client.solrj.request.UpdateRequest.ACTION;
import org.apache.solr.client.solrj.response.CoreAdminResponse;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.util.FileUtils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.util.AbstractSolrTestCase;
import org.junit.After;
@@ -54,6 +55,7 @@ import org.w3c.dom.Node;
public class TestSolrProperties extends LuceneTestCase {
protected static Logger log = LoggerFactory.getLogger(TestSolrProperties.class);
protected CoreContainer cores = null;
+ private File home;
private File solrXml;
private static final XPathFactory xpathFactory = XPathFactory.newInstance();
@@ -62,21 +64,27 @@ public class TestSolrProperties extends
return "solr/shared";
}
- public String getSolrXml() {
+ public String getOrigSolrXml() {
return "solr.xml";
}
+ public String getSolrXml() {
+ return "test-solr.xml";
+ }
+
@Override
@Before
public void setUp() throws Exception {
super.setUp();
System.setProperty("solr.solr.home", getSolrHome());
- File home = SolrTestCaseJ4.getFile(getSolrHome());
+ home = SolrTestCaseJ4.getFile(getSolrHome());
System.setProperty("solr.solr.home", home.getAbsolutePath());
log.info("pwd: " + (new File(".")).getAbsolutePath());
+ File origSolrXml = new File(home, getOrigSolrXml());
solrXml = new File(home, getSolrXml());
+ FileUtils.copyFile(origSolrXml, solrXml);
cores = new CoreContainer(home.getAbsolutePath(), solrXml);
}
@@ -85,7 +93,7 @@ public class TestSolrProperties extends
public void tearDown() throws Exception {
if (cores != null)
cores.shutdown();
- File dataDir = new File(getSolrHome() + "/data");
+ File dataDir = new File(home,"data");
String skip = System.getProperty("solr.test.leavedatadir");
if (null != skip && 0 != skip.trim().length()) {
log.info("NOTE: per solr.test.leavedatadir, dataDir will not be removed: " + dataDir.getAbsolutePath());
@@ -94,8 +102,9 @@ public class TestSolrProperties extends
log.warn("!!!! WARNING: best effort to remove " + dataDir.getAbsolutePath() + " FAILED !!!!!");
}
}
- File persistedFile = new File(getSolrHome() + File.separator + "solr-persist.xml");
- persistedFile.delete();
+ File persistedFile = new File(home,"solr-persist.xml");
+ assertTrue("Failed to delete "+persistedFile, persistedFile.delete());
+ assertTrue("Failed to delete "+solrXml, solrXml.delete());
super.tearDown();
}