You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2009/10/13 22:44:59 UTC
svn commit: r824918 [11/11] - in /lucene/java/branches/flex_1458:
contrib/analyzers/common/src/java/org/apache/lucene/analysis/query/
contrib/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/
contrib/benchmark/src/test/org/apache/lucene/ben...
Modified: lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestSort.java?rev=824918&r1=824917&r2=824918&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestSort.java Tue Oct 13 20:44:51 2009
@@ -35,6 +35,7 @@
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermRef;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.store.LockObtainFailedException;
@@ -272,7 +273,7 @@
sort.setSort(
new SortField("string", SortField.STRING),
new SortField("string2", SortField.STRING, true),
- SortField.FIELD_DOC );
+ SortField.FIELD_DOC);
result = searcher.search(new MatchAllDocsQuery(), null, 500, sort).scoreDocs;
@@ -331,56 +332,56 @@
FieldCache fc = FieldCache.DEFAULT;
- sort.setSort (new SortField ("parser", new FieldCache.IntParser(){
- public final int parseInt(final String val) {
- return (val.charAt(0)-'A') * 123456;
+ sort.setSort (new SortField[] { new SortField ("parser", new FieldCache.IntParser(){
+ public final int parseInt(final TermRef term) {
+ return (term.bytes[term.offset]-'A') * 123456;
}
- }), SortField.FIELD_DOC );
+ }), SortField.FIELD_DOC });
assertMatches (full, queryA, sort, "JIHGFEDCBA");
assertSaneFieldCaches(getName() + " IntParser");
fc.purgeAllCaches();
- sort.setSort (new SortField ("parser", new FieldCache.FloatParser(){
- public final float parseFloat(final String val) {
- return (float) Math.sqrt( val.charAt(0) );
+ sort.setSort (new SortField[] { new SortField ("parser", new FieldCache.FloatParser(){
+ public final float parseFloat(final TermRef term) {
+ return (float) Math.sqrt( term.bytes[term.offset] );
}
- }), SortField.FIELD_DOC );
+ }), SortField.FIELD_DOC });
assertMatches (full, queryA, sort, "JIHGFEDCBA");
assertSaneFieldCaches(getName() + " FloatParser");
fc.purgeAllCaches();
- sort.setSort (new SortField ("parser", new FieldCache.LongParser(){
- public final long parseLong(final String val) {
- return (val.charAt(0)-'A') * 1234567890L;
+ sort.setSort (new SortField[] { new SortField ("parser", new FieldCache.LongParser(){
+ public final long parseLong(final TermRef term) {
+ return (term.bytes[term.offset]-'A') * 1234567890L;
}
- }), SortField.FIELD_DOC );
+ }), SortField.FIELD_DOC });
assertMatches (full, queryA, sort, "JIHGFEDCBA");
assertSaneFieldCaches(getName() + " LongParser");
fc.purgeAllCaches();
- sort.setSort (new SortField ("parser", new FieldCache.DoubleParser(){
- public final double parseDouble(final String val) {
- return Math.pow( val.charAt(0), (val.charAt(0)-'A') );
+ sort.setSort (new SortField[] { new SortField ("parser", new FieldCache.DoubleParser(){
+ public final double parseDouble(final TermRef term) {
+ return Math.pow( term.bytes[term.offset], (term.bytes[term.offset]-'A') );
}
- }), SortField.FIELD_DOC );
+ }), SortField.FIELD_DOC });
assertMatches (full, queryA, sort, "JIHGFEDCBA");
assertSaneFieldCaches(getName() + " DoubleParser");
fc.purgeAllCaches();
- sort.setSort (new SortField ("parser", new FieldCache.ByteParser(){
- public final byte parseByte(final String val) {
- return (byte) (val.charAt(0)-'A');
+ sort.setSort (new SortField[] { new SortField ("parser", new FieldCache.ByteParser(){
+ public final byte parseByte(final TermRef term) {
+ return (byte) (term.bytes[term.offset]-'A');
}
- }), SortField.FIELD_DOC );
+ }), SortField.FIELD_DOC });
assertMatches (full, queryA, sort, "JIHGFEDCBA");
assertSaneFieldCaches(getName() + " ByteParser");
fc.purgeAllCaches();
- sort.setSort (new SortField ("parser", new FieldCache.ShortParser(){
- public final short parseShort(final String val) {
- return (short) (val.charAt(0)-'A');
+ sort.setSort (new SortField[] { new SortField ("parser", new FieldCache.ShortParser(){
+ public final short parseShort(final TermRef term) {
+ return (short) (term.bytes[term.offset]-'A');
}
- }), SortField.FIELD_DOC );
+ }), SortField.FIELD_DOC });
assertMatches (full, queryA, sort, "JIHGFEDCBA");
assertSaneFieldCaches(getName() + " ShortParser");
fc.purgeAllCaches();
@@ -433,8 +434,8 @@
public void setNextReader(IndexReader reader, int docBase) throws IOException {
docValues = FieldCache.DEFAULT.getInts(reader, "parser", new FieldCache.IntParser() {
- public final int parseInt(final String val) {
- return (val.charAt(0)-'A') * 123456;
+ public final int parseInt(final TermRef term) {
+ return (term.bytes[term.offset]-'A') * 123456;
}
});
}
Modified: lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestTermScorer.java?rev=824918&r1=824917&r2=824918&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestTermScorer.java Tue Oct 13 20:44:51 2009
@@ -71,9 +71,8 @@
Weight weight = termQuery.weight(indexSearcher);
- TermScorer ts = new TermScorer(weight,
- indexReader.termDocs(allTerm), indexSearcher.getSimilarity(),
- indexReader.norms(FIELD));
+ Scorer ts = weight.scorer(indexSearcher.getIndexReader(),
+ true, true);
//we have 2 documents with the term all in them, one document for all the other values
final List docs = new ArrayList();
//must call next first
@@ -133,9 +132,8 @@
Weight weight = termQuery.weight(indexSearcher);
- TermScorer ts = new TermScorer(weight,
- indexReader.termDocs(allTerm), indexSearcher.getSimilarity(),
- indexReader.norms(FIELD));
+ Scorer ts = weight.scorer(indexSearcher.getIndexReader(),
+ true, true);
assertTrue("next did not return a doc", ts.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertTrue("score is not correct", ts.score() == 1.6931472f);
assertTrue("next did not return a doc", ts.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
@@ -143,16 +141,15 @@
assertTrue("next returned a doc and it should not have", ts.nextDoc() == DocIdSetIterator.NO_MORE_DOCS);
}
- public void testSkipTo() throws Exception {
+ public void testAdvance() throws Exception {
Term allTerm = new Term(FIELD, "all");
TermQuery termQuery = new TermQuery(allTerm);
Weight weight = termQuery.weight(indexSearcher);
- TermScorer ts = new TermScorer(weight,
- indexReader.termDocs(allTerm), indexSearcher.getSimilarity(),
- indexReader.norms(FIELD));
+ Scorer ts = weight.scorer(indexSearcher.getIndexReader(),
+ true, true);
assertTrue("Didn't skip", ts.advance(3) != DocIdSetIterator.NO_MORE_DOCS);
//The next doc should be doc 5
assertTrue("doc should be number 5", ts.docID() == 5);
@@ -165,9 +162,8 @@
Weight weight = termQuery.weight(indexSearcher);
- TermScorer ts = new TermScorer(weight,
- indexReader.termDocs(allTerm), indexSearcher.getSimilarity(),
- indexReader.norms(FIELD));
+ Scorer ts = weight.scorer(indexSearcher.getIndexReader(),
+ true, true);
Explanation explanation = ts.explain(0);
assertTrue("explanation is null and it shouldn't be", explanation != null);
//System.out.println("Explanation: " + explanation.toString());
@@ -183,8 +179,8 @@
termQuery = new TermQuery(dogsTerm);
weight = termQuery.weight(indexSearcher);
- ts = new TermScorer(weight, indexReader.termDocs(dogsTerm), indexSearcher.getSimilarity(),
- indexReader.norms(FIELD));
+ ts = weight.scorer(indexSearcher.getIndexReader(),
+ true, true);
explanation = ts.explain(1);
assertTrue("explanation is null and it shouldn't be", explanation != null);
//System.out.println("Explanation: " + explanation.toString());
Modified: lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMDirectory.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMDirectory.java?rev=824918&r1=824917&r2=824918&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMDirectory.java (original)
+++ lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMDirectory.java Tue Oct 13 20:44:51 2009
@@ -195,8 +195,10 @@
if (crashed)
throw new IOException("cannot createOutput after crash");
init();
- if (preventDoubleWrite && createdFiles.contains(name) && !name.equals("segments.gen"))
- throw new IOException("file \"" + name + "\" was already written to");
+ synchronized(this) {
+ if (preventDoubleWrite && createdFiles.contains(name) && !name.equals("segments.gen"))
+ throw new IOException("file \"" + name + "\" was already written to");
+ }
if (noDeleteOpenFile && openFiles.containsKey(name))
throw new IOException("MockRAMDirectory: file \"" + name + "\" is still open: cannot overwrite");
RAMFile file = new RAMFile(this);
@@ -219,21 +221,25 @@
return new MockRAMOutputStream(this, file, name);
}
+
+ static class OpenFile {
+ final String name;
+ final Throwable stack;
+ OpenFile(String name) {
+ this.name = name;
+ this.stack = new Throwable();
+ }
+ }
public synchronized IndexInput openInput(String name) throws IOException {
RAMFile file = (RAMFile)fileMap.get(name);
if (file == null)
throw new FileNotFoundException(name);
else {
- if (openFiles.containsKey(name)) {
- Integer v = (Integer) openFiles.get(name);
- v = Integer.valueOf(v.intValue()+1);
- openFiles.put(name, v);
- } else {
- openFiles.put(name, Integer.valueOf(1));
- }
+ IndexInput in = new MockRAMInputStream(this, name, file);
+ openFiles.put(in, new OpenFile(name));
+ return in;
}
- return new MockRAMInputStream(this, name, file);
}
/** Provided for testing purposes. Use sizeInBytes() instead. */
@@ -266,7 +272,14 @@
if (noDeleteOpenFile && openFiles.size() > 0) {
// RuntimeException instead of IOException because
// super() does not throw IOException currently:
- throw new RuntimeException("MockRAMDirectory: cannot close: there are still open files: " + openFiles);
+ Iterator it = openFiles.values().iterator();
+ System.out.println("\nMockRAMDirectory open files:");
+ while(it.hasNext()) {
+ OpenFile openFile = (OpenFile) it.next();
+ System.out.println("\nfile " + openFile.name + " opened from:\n");
+ openFile.stack.printStackTrace(System.out);
+ }
+ throw new RuntimeException("MockRAMDirectory: cannot close: there are still open files");
}
}
Modified: lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMInputStream.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMInputStream.java?rev=824918&r1=824917&r2=824918&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMInputStream.java (original)
+++ lucene/java/branches/flex_1458/src/test/org/apache/lucene/store/MockRAMInputStream.java Tue Oct 13 20:44:51 2009
@@ -44,16 +44,8 @@
// all clones get closed:
if (!isClone) {
synchronized(dir) {
- Integer v = (Integer) dir.openFiles.get(name);
- // Could be null when MockRAMDirectory.crash() was called
- if (v != null) {
- if (v.intValue() == 1) {
- dir.openFiles.remove(name);
- } else {
- v = Integer.valueOf(v.intValue()-1);
- dir.openFiles.put(name, v);
- }
- }
+ assert dir.openFiles.containsKey(this): "input=" + name + " is not open";
+ dir.openFiles.remove(this);
}
}
}