You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/10/21 20:58:44 UTC
svn commit: r1534320 [22/39] - in /lucene/dev/branches/lucene4956: ./
dev-tools/ dev-tools/idea/.idea/ dev-tools/idea/lucene/expressions/
dev-tools/idea/solr/contrib/velocity/ dev-tools/maven/
dev-tools/maven/lucene/ dev-tools/maven/lucene/expressions/...
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java Mon Oct 21 18:58:24 2013
@@ -31,12 +31,9 @@ import org.apache.lucene.util.mutable.Mu
import org.apache.lucene.util.mutable.MutableValueInt;
/**
- * Obtains int field values from the {@link org.apache.lucene.search.FieldCache}
- * using <code>getInts()</code>
- * and makes those values available as other numeric types, casting as needed. *
- *
+ * Obtains int field values from {@link FieldCache#getInts} and makes those
+ * values available as other numeric types, casting as needed.
*/
-
public class IntFieldSource extends FieldCacheSource {
final FieldCache.IntParser parser;
@@ -95,7 +92,7 @@ public class IntFieldSource extends Fiel
@Override
public boolean exists(int doc) {
- return valid.get(doc);
+ return arr.get(doc) != 0 || valid.get(doc);
}
@Override
@@ -104,40 +101,6 @@ public class IntFieldSource extends Fiel
}
@Override
- public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
- int lower,upper;
-
- // instead of using separate comparison functions, adjust the endpoints.
-
- if (lowerVal==null) {
- lower = Integer.MIN_VALUE;
- } else {
- lower = Integer.parseInt(lowerVal);
- if (!includeLower && lower < Integer.MAX_VALUE) lower++;
- }
-
- if (upperVal==null) {
- upper = Integer.MAX_VALUE;
- } else {
- upper = Integer.parseInt(upperVal);
- if (!includeUpper && upper > Integer.MIN_VALUE) upper--;
- }
-
- final int ll = lower;
- final int uu = upper;
-
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- int val = arr.get(doc);
- // only check for deleted if it's the default value
- // if (val==0 && reader.isDeleted(doc)) return false;
- return val >= ll && val <= uu;
- }
- };
- }
-
- @Override
public ValueFiller getValueFiller() {
return new ValueFiller() {
private final MutableValueInt mval = new MutableValueInt();
@@ -150,7 +113,7 @@ public class IntFieldSource extends Fiel
@Override
public void fillValue(int doc) {
mval.value = arr.get(doc);
- mval.exists = valid.get(doc);
+ mval.exists = mval.value != 0 || valid.get(doc);
}
};
}
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java Mon Oct 21 18:58:24 2013
@@ -56,7 +56,7 @@ public class JoinDocFreqValueSource exte
@Override
public FunctionValues getValues(Map context, AtomicReaderContext readerContext) throws IOException
{
- final BinaryDocValues terms = cache.getTerms(readerContext.reader(), field, PackedInts.FAST);
+ final BinaryDocValues terms = cache.getTerms(readerContext.reader(), field, false, PackedInts.FAST);
final IndexReader top = ReaderUtil.getTopLevelContext(readerContext).reader();
Terms t = MultiFields.getTerms(top, qfield);
final TermsEnum termsEnum = t == null ? TermsEnum.EMPTY : t.iterator(null);
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java Mon Oct 21 18:58:24 2013
@@ -31,13 +31,9 @@ import org.apache.lucene.util.mutable.Mu
import org.apache.lucene.util.mutable.MutableValueLong;
/**
- * Obtains float field values from the {@link org.apache.lucene.search.FieldCache}
- * using <code>getFloats()</code>
- * and makes those values available as other numeric types, casting as needed.
- *
- *
+ * Obtains long field values from {@link FieldCache#getLongs} and makes those
+ * values available as other numeric types, casting as needed.
*/
-
public class LongFieldSource extends FieldCacheSource {
protected final FieldCache.LongParser parser;
@@ -81,7 +77,7 @@ public class LongFieldSource extends Fie
@Override
public boolean exists(int doc) {
- return valid.get(doc);
+ return arr.get(doc) != 0 || valid.get(doc);
}
@Override
@@ -95,37 +91,8 @@ public class LongFieldSource extends Fie
}
@Override
- public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
- long lower,upper;
-
- // instead of using separate comparison functions, adjust the endpoints.
-
- if (lowerVal==null) {
- lower = Long.MIN_VALUE;
- } else {
- lower = externalToLong(lowerVal);
- if (!includeLower && lower < Long.MAX_VALUE) lower++;
- }
-
- if (upperVal==null) {
- upper = Long.MAX_VALUE;
- } else {
- upper = externalToLong(upperVal);
- if (!includeUpper && upper > Long.MIN_VALUE) upper--;
- }
-
- final long ll = lower;
- final long uu = upper;
-
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- long val = arr.get(doc);
- // only check for deleted if it's the default value
- // if (val==0 && reader.isDeleted(doc)) return false;
- return val >= ll && val <= uu;
- }
- };
+ protected long externalToLong(String extVal) {
+ return LongFieldSource.this.externalToLong(extVal);
}
@Override
@@ -141,7 +108,7 @@ public class LongFieldSource extends Fie
@Override
public void fillValue(int doc) {
mval.value = arr.get(doc);
- mval.exists = valid.get(doc);
+ mval.exists = mval.value != 0 || valid.get(doc);
}
};
}
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/OrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/OrdFieldSource.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/OrdFieldSource.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/OrdFieldSource.java Mon Oct 21 18:58:24 2013
@@ -70,9 +70,7 @@ public class OrdFieldSource extends Valu
public FunctionValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final int off = readerContext.docBase;
final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader();
- final AtomicReader r = topReader instanceof CompositeReader
- ? new SlowCompositeReaderWrapper((CompositeReader)topReader)
- : (AtomicReader) topReader;
+ final AtomicReader r = SlowCompositeReaderWrapper.wrap(topReader);
final SortedDocValues sindex = FieldCache.DEFAULT.getTermsIndex(r, field);
return new IntDocValues(this) {
protected String toTerm(String readableValue) {
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ReverseOrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ReverseOrdFieldSource.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ReverseOrdFieldSource.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ReverseOrdFieldSource.java Mon Oct 21 18:58:24 2013
@@ -69,9 +69,7 @@ public class ReverseOrdFieldSource exten
@Override
public FunctionValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader();
- final AtomicReader r = topReader instanceof CompositeReader
- ? new SlowCompositeReaderWrapper((CompositeReader)topReader)
- : (AtomicReader) topReader;
+ final AtomicReader r = SlowCompositeReaderWrapper.wrap(topReader);
final int off = readerContext.docBase;
final SortedDocValues sindex = FieldCache.DEFAULT.getTermsIndex(r, field);
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis.java Mon Oct 21 18:58:24 2013
@@ -777,31 +777,31 @@ public final class MoreLikeThis {
throw new UnsupportedOperationException("To use MoreLikeThis without " +
"term vectors, you must provide an Analyzer");
}
- TokenStream ts = analyzer.tokenStream(fieldName, r);
- int tokenCount = 0;
- // for every token
- CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
- ts.reset();
- while (ts.incrementToken()) {
- String word = termAtt.toString();
- tokenCount++;
- if (tokenCount > maxNumTokensParsed) {
- break;
- }
- if (isNoiseWord(word)) {
- continue;
- }
-
- // increment frequency
- Int cnt = termFreqMap.get(word);
- if (cnt == null) {
- termFreqMap.put(word, new Int());
- } else {
- cnt.x++;
+ try (TokenStream ts = analyzer.tokenStream(fieldName, r)) {
+ int tokenCount = 0;
+ // for every token
+ CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
+ ts.reset();
+ while (ts.incrementToken()) {
+ String word = termAtt.toString();
+ tokenCount++;
+ if (tokenCount > maxNumTokensParsed) {
+ break;
+ }
+ if (isNoiseWord(word)) {
+ continue;
+ }
+
+ // increment frequency
+ Int cnt = termFreqMap.get(word);
+ if (cnt == null) {
+ termFreqMap.put(word, new Int());
+ } else {
+ cnt.x++;
+ }
}
+ ts.end();
}
- ts.end();
- ts.close();
}
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/BooleanFilterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/BooleanFilterTest.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/BooleanFilterTest.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/BooleanFilterTest.java Mon Oct 21 18:58:24 2013
@@ -56,7 +56,7 @@ public class BooleanFilterTest extends L
addDoc(writer, "guest", "020", "20050101", "Y");
addDoc(writer, "admin", "020", "20050101", "Maybe");
addDoc(writer, "admin guest", "030", "20050101", "N");
- reader = new SlowCompositeReaderWrapper(writer.getReader());
+ reader = SlowCompositeReaderWrapper.wrap(writer.getReader());
writer.close();
}
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/CommonTermsQueryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/CommonTermsQueryTest.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/CommonTermsQueryTest.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/CommonTermsQueryTest.java Mon Oct 21 18:58:24 2013
@@ -27,6 +27,7 @@ import java.util.Set;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.index.AtomicReader;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
@@ -282,6 +283,37 @@ public class CommonTermsQueryTest extend
r.document(search.scoreDocs[1].doc).get("id"),
r.document(search.scoreDocs[2].doc).get("id"))));
}
+
+ {
+ // only high freq terms around - check that min should match is applied
+ CommonTermsQuery query = new CommonTermsQuery(Occur.SHOULD, Occur.SHOULD,
+ random().nextBoolean() ? 2.0f : 0.5f);
+ query.add(new Term("field", "is"));
+ query.add(new Term("field", "this"));
+ query.add(new Term("field", "the"));
+ query.setLowFreqMinimumNumberShouldMatch(1.0f);
+ query.setHighFreqMinimumNumberShouldMatch(2.0f);
+ TopDocs search = s.search(query, 10);
+ assertEquals(search.totalHits, 4);
+ }
+
+ {
+ // only high freq terms around - check that min should match is applied
+ CommonTermsQuery query = new CommonTermsQuery(Occur.MUST, Occur.SHOULD,
+ random().nextBoolean() ? 2.0f : 0.5f);
+ query.add(new Term("field", "is"));
+ query.add(new Term("field", "this"));
+ query.add(new Term("field", "the"));
+ query.setLowFreqMinimumNumberShouldMatch(1.0f);
+ query.setHighFreqMinimumNumberShouldMatch(2.0f);
+ TopDocs search = s.search(query, 10);
+ assertEquals(search.totalHits, 2);
+ assertEquals(
+ new HashSet<>(Arrays.asList("0", "2")),
+ new HashSet<>(Arrays.asList(
+ r.document(search.scoreDocs[0].doc).get("id"),
+ r.document(search.scoreDocs[1].doc).get("id"))));
+ }
r.close();
w.close();
dir.close();
@@ -311,7 +343,7 @@ public class CommonTermsQueryTest extend
RandomIndexWriter w = new RandomIndexWriter(random(), dir);
createRandomIndex(atLeast(50), w, random().nextLong());
DirectoryReader reader = w.getReader();
- SlowCompositeReaderWrapper wrapper = new SlowCompositeReaderWrapper(reader);
+ AtomicReader wrapper = SlowCompositeReaderWrapper.wrap(reader);
String field = "body";
Terms terms = wrapper.terms(field);
PriorityQueue<TermAndFreq> lowFreqQueue = new PriorityQueue<CommonTermsQueryTest.TermAndFreq>(
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermFilterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermFilterTest.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermFilterTest.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermFilterTest.java Mon Oct 21 18:58:24 2013
@@ -59,7 +59,7 @@ public class TermFilterTest extends Luce
Document doc = new Document();
doc.add(newStringField(fieldName, "value1", Field.Store.NO));
w.addDocument(doc);
- IndexReader reader = new SlowCompositeReaderWrapper(w.getReader());
+ IndexReader reader = SlowCompositeReaderWrapper.wrap(w.getReader());
assertTrue(reader.getContext() instanceof AtomicReaderContext);
AtomicReaderContext context = (AtomicReaderContext) reader.getContext();
w.close();
Modified: lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermsFilterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermsFilterTest.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermsFilterTest.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queries/src/test/org/apache/lucene/queries/TermsFilterTest.java Mon Oct 21 18:58:24 2013
@@ -74,7 +74,7 @@ public class TermsFilterTest extends Luc
doc.add(newStringField(fieldName, "" + term, Field.Store.YES));
w.addDocument(doc);
}
- IndexReader reader = new SlowCompositeReaderWrapper(w.getReader());
+ IndexReader reader = SlowCompositeReaderWrapper.wrap(w.getReader());
assertTrue(reader.getContext() instanceof AtomicReaderContext);
AtomicReaderContext context = (AtomicReaderContext) reader.getContext();
w.close();
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/analyzing/AnalyzingQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/analyzing/AnalyzingQueryParser.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/analyzing/AnalyzingQueryParser.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/analyzing/AnalyzingQueryParser.java Mon Oct 21 18:58:24 2013
@@ -162,9 +162,7 @@ public class AnalyzingQueryParser extend
*/
protected String analyzeSingleChunk(String field, String termStr, String chunk) throws ParseException{
String analyzed = null;
- TokenStream stream = null;
- try{
- stream = getAnalyzer().tokenStream(field, chunk);
+ try (TokenStream stream = getAnalyzer().tokenStream(field, chunk)) {
stream.reset();
CharTermAttribute termAtt = stream.getAttribute(CharTermAttribute.class);
// get first and hopefully only output token
@@ -186,7 +184,6 @@ public class AnalyzingQueryParser extend
multipleOutputs.append('"');
}
stream.end();
- stream.close();
if (null != multipleOutputs) {
throw new ParseException(
String.format(getLocale(),
@@ -196,7 +193,6 @@ public class AnalyzingQueryParser extend
// nothing returned by analyzer. Was it a stop word and the user accidentally
// used an analyzer with stop words?
stream.end();
- stream.close();
throw new ParseException(String.format(getLocale(), "Analyzer returned nothing for \"%s\"", chunk));
}
} catch (IOException e){
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java Mon Oct 21 18:58:24 2013
@@ -23,9 +23,7 @@ import java.text.DateFormat;
import java.util.*;
import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.CachingTokenFilter;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.index.Term;
@@ -34,13 +32,14 @@ import org.apache.lucene.queryparser.fle
import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanQuery.TooManyClauses;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.QueryBuilder;
import org.apache.lucene.util.Version;
/** This class is overridden by QueryParser in QueryParser.jj
* and acts to separate the majority of the Java code from the .jj grammar file.
*/
-public abstract class QueryParserBase implements CommonQueryParserConfiguration {
-
+public abstract class QueryParserBase extends QueryBuilder implements CommonQueryParserConfiguration {
+
/** Do not catch this exception in your code, it means you are using methods that you should no longer use. */
public static class MethodRemovedUseAnother extends Throwable {}
@@ -65,9 +64,7 @@ public abstract class QueryParserBase im
boolean lowercaseExpandedTerms = true;
MultiTermQuery.RewriteMethod multiTermRewriteMethod = MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT;
boolean allowLeadingWildcard = false;
- boolean enablePositionIncrements = true;
- Analyzer analyzer;
String field;
int phraseSlop = 0;
float fuzzyMinSim = FuzzyQuery.defaultMinSimilarity;
@@ -88,6 +85,7 @@ public abstract class QueryParserBase im
// So the generated QueryParser(CharStream) won't error out
protected QueryParserBase() {
+ super(null);
}
/** Initializes a query parser. Called by the QueryParser constructor
@@ -96,7 +94,7 @@ public abstract class QueryParserBase im
* @param a used to find terms in the query text.
*/
public void init(Version matchVersion, String f, Analyzer a) {
- analyzer = a;
+ setAnalyzer(a);
field = f;
setAutoGeneratePhraseQueries(false);
}
@@ -135,15 +133,6 @@ public abstract class QueryParserBase im
}
}
-
- /**
- * @return Returns the analyzer.
- */
- @Override
- public Analyzer getAnalyzer() {
- return analyzer;
- }
-
/**
* @return Returns the default field.
*/
@@ -248,29 +237,6 @@ public abstract class QueryParserBase im
}
/**
- * Set to <code>true</code> to enable position increments in result query.
- * <p>
- * When set, result phrase and multi-phrase queries will
- * be aware of position increments.
- * Useful when e.g. a StopFilter increases the position increment of
- * the token that follows an omitted token.
- * <p>
- * Default: true.
- */
- @Override
- public void setEnablePositionIncrements(boolean enable) {
- this.enablePositionIncrements = enable;
- }
-
- /**
- * @see #setEnablePositionIncrements(boolean)
- */
- @Override
- public boolean getEnablePositionIncrements() {
- return enablePositionIncrements;
- }
-
- /**
* Sets the boolean operator of the QueryParser.
* In default mode (<code>OR_OPERATOR</code>) terms without any modifiers
* are considered optional: for example <code>capital of Hungary</code> is equal to
@@ -488,205 +454,15 @@ public abstract class QueryParserBase im
* @exception org.apache.lucene.queryparser.classic.ParseException throw in overridden method to disallow
*/
protected Query getFieldQuery(String field, String queryText, boolean quoted) throws ParseException {
- return newFieldQuery(analyzer, field, queryText, quoted);
+ return newFieldQuery(getAnalyzer(), field, queryText, quoted);
}
/**
* @exception org.apache.lucene.queryparser.classic.ParseException throw in overridden method to disallow
*/
protected Query newFieldQuery(Analyzer analyzer, String field, String queryText, boolean quoted) throws ParseException {
- // Use the analyzer to get all the tokens, and then build a TermQuery,
- // PhraseQuery, or nothing based on the term count
-
- TokenStream source;
- try {
- source = analyzer.tokenStream(field, queryText);
- source.reset();
- } catch (IOException e) {
- ParseException p = new ParseException("Unable to initialize TokenStream to analyze query text");
- p.initCause(e);
- throw p;
- }
- CachingTokenFilter buffer = new CachingTokenFilter(source);
- TermToBytesRefAttribute termAtt = null;
- PositionIncrementAttribute posIncrAtt = null;
- int numTokens = 0;
-
- buffer.reset();
-
- if (buffer.hasAttribute(TermToBytesRefAttribute.class)) {
- termAtt = buffer.getAttribute(TermToBytesRefAttribute.class);
- }
- if (buffer.hasAttribute(PositionIncrementAttribute.class)) {
- posIncrAtt = buffer.getAttribute(PositionIncrementAttribute.class);
- }
-
- int positionCount = 0;
- boolean severalTokensAtSamePosition = false;
-
- boolean hasMoreTokens = false;
- if (termAtt != null) {
- try {
- hasMoreTokens = buffer.incrementToken();
- while (hasMoreTokens) {
- numTokens++;
- int positionIncrement = (posIncrAtt != null) ? posIncrAtt.getPositionIncrement() : 1;
- if (positionIncrement != 0) {
- positionCount += positionIncrement;
- } else {
- severalTokensAtSamePosition = true;
- }
- hasMoreTokens = buffer.incrementToken();
- }
- } catch (IOException e) {
- // ignore
- }
- }
- try {
- // rewind the buffer stream
- buffer.reset();
-
- // close original stream - all tokens buffered
- source.close();
- }
- catch (IOException e) {
- ParseException p = new ParseException("Cannot close TokenStream analyzing query text");
- p.initCause(e);
- throw p;
- }
-
- BytesRef bytes = termAtt == null ? null : termAtt.getBytesRef();
-
- if (numTokens == 0)
- return null;
- else if (numTokens == 1) {
- try {
- boolean hasNext = buffer.incrementToken();
- assert hasNext == true;
- termAtt.fillBytesRef();
- } catch (IOException e) {
- // safe to ignore, because we know the number of tokens
- }
- return newTermQuery(new Term(field, BytesRef.deepCopyOf(bytes)));
- } else {
- if (severalTokensAtSamePosition || (!quoted && !autoGeneratePhraseQueries)) {
- if (positionCount == 1 || (!quoted && !autoGeneratePhraseQueries)) {
- // no phrase query:
-
- if (positionCount == 1) {
- // simple case: only one position, with synonyms
- BooleanQuery q = newBooleanQuery(true);
- for (int i = 0; i < numTokens; i++) {
- try {
- boolean hasNext = buffer.incrementToken();
- assert hasNext == true;
- termAtt.fillBytesRef();
- } catch (IOException e) {
- // safe to ignore, because we know the number of tokens
- }
- Query currentQuery = newTermQuery(
- new Term(field, BytesRef.deepCopyOf(bytes)));
- q.add(currentQuery, BooleanClause.Occur.SHOULD);
- }
- return q;
- } else {
- // multiple positions
- BooleanQuery q = newBooleanQuery(false);
- final BooleanClause.Occur occur = operator == Operator.AND ? BooleanClause.Occur.MUST : BooleanClause.Occur.SHOULD;
- Query currentQuery = null;
- for (int i = 0; i < numTokens; i++) {
- try {
- boolean hasNext = buffer.incrementToken();
- assert hasNext == true;
- termAtt.fillBytesRef();
- } catch (IOException e) {
- // safe to ignore, because we know the number of tokens
- }
- if (posIncrAtt != null && posIncrAtt.getPositionIncrement() == 0) {
- if (!(currentQuery instanceof BooleanQuery)) {
- Query t = currentQuery;
- currentQuery = newBooleanQuery(true);
- ((BooleanQuery)currentQuery).add(t, BooleanClause.Occur.SHOULD);
- }
- ((BooleanQuery)currentQuery).add(newTermQuery(new Term(field, BytesRef.deepCopyOf(bytes))), BooleanClause.Occur.SHOULD);
- } else {
- if (currentQuery != null) {
- q.add(currentQuery, occur);
- }
- currentQuery = newTermQuery(new Term(field, BytesRef.deepCopyOf(bytes)));
- }
- }
- q.add(currentQuery, occur);
- return q;
- }
- }
- else {
- // phrase query:
- MultiPhraseQuery mpq = newMultiPhraseQuery();
- mpq.setSlop(phraseSlop);
- List<Term> multiTerms = new ArrayList<Term>();
- int position = -1;
- for (int i = 0; i < numTokens; i++) {
- int positionIncrement = 1;
- try {
- boolean hasNext = buffer.incrementToken();
- assert hasNext == true;
- termAtt.fillBytesRef();
- if (posIncrAtt != null) {
- positionIncrement = posIncrAtt.getPositionIncrement();
- }
- } catch (IOException e) {
- // safe to ignore, because we know the number of tokens
- }
-
- if (positionIncrement > 0 && multiTerms.size() > 0) {
- if (enablePositionIncrements) {
- mpq.add(multiTerms.toArray(new Term[0]),position);
- } else {
- mpq.add(multiTerms.toArray(new Term[0]));
- }
- multiTerms.clear();
- }
- position += positionIncrement;
- multiTerms.add(new Term(field, BytesRef.deepCopyOf(bytes)));
- }
- if (enablePositionIncrements) {
- mpq.add(multiTerms.toArray(new Term[0]),position);
- } else {
- mpq.add(multiTerms.toArray(new Term[0]));
- }
- return mpq;
- }
- }
- else {
- PhraseQuery pq = newPhraseQuery();
- pq.setSlop(phraseSlop);
- int position = -1;
-
- for (int i = 0; i < numTokens; i++) {
- int positionIncrement = 1;
-
- try {
- boolean hasNext = buffer.incrementToken();
- assert hasNext == true;
- termAtt.fillBytesRef();
- if (posIncrAtt != null) {
- positionIncrement = posIncrAtt.getPositionIncrement();
- }
- } catch (IOException e) {
- // safe to ignore, because we know the number of tokens
- }
-
- if (enablePositionIncrements) {
- position += positionIncrement;
- pq.add(new Term(field, BytesRef.deepCopyOf(bytes)),position);
- } else {
- pq.add(new Term(field, BytesRef.deepCopyOf(bytes)));
- }
- }
- return pq;
- }
- }
+ BooleanClause.Occur occur = operator == Operator.AND ? BooleanClause.Occur.MUST : BooleanClause.Occur.SHOULD;
+ return createFieldQuery(analyzer, occur, field, queryText, quoted || autoGeneratePhraseQueries, phraseSlop);
}
@@ -753,15 +529,6 @@ public abstract class QueryParserBase im
}
/**
- * Builds a new BooleanQuery instance
- * @param disableCoord disable coord
- * @return new BooleanQuery instance
- */
- protected BooleanQuery newBooleanQuery(boolean disableCoord) {
- return new BooleanQuery(disableCoord);
- }
-
- /**
* Builds a new BooleanClause instance
* @param q sub query
* @param occur how this clause should occur when matching documents
@@ -772,31 +539,6 @@ public abstract class QueryParserBase im
}
/**
- * Builds a new TermQuery instance
- * @param term term
- * @return new TermQuery instance
- */
- protected Query newTermQuery(Term term){
- return new TermQuery(term);
- }
-
- /**
- * Builds a new PhraseQuery instance
- * @return new PhraseQuery instance
- */
- protected PhraseQuery newPhraseQuery(){
- return new PhraseQuery();
- }
-
- /**
- * Builds a new MultiPhraseQuery instance
- * @return new MultiPhraseQuery instance
- */
- protected MultiPhraseQuery newMultiPhraseQuery(){
- return new MultiPhraseQuery();
- }
-
- /**
* Builds a new PrefixQuery instance
* @param prefix Prefix term
* @return new PrefixQuery instance
@@ -835,42 +577,28 @@ public abstract class QueryParserBase im
// TODO: Should this be protected instead?
private BytesRef analyzeMultitermTerm(String field, String part) {
- return analyzeMultitermTerm(field, part, analyzer);
+ return analyzeMultitermTerm(field, part, getAnalyzer());
}
protected BytesRef analyzeMultitermTerm(String field, String part, Analyzer analyzerIn) {
- TokenStream source;
-
- if (analyzerIn == null) analyzerIn = analyzer;
+ if (analyzerIn == null) analyzerIn = getAnalyzer();
- try {
- source = analyzerIn.tokenStream(field, part);
+ try (TokenStream source = analyzerIn.tokenStream(field, part)) {
source.reset();
- } catch (IOException e) {
- throw new RuntimeException("Unable to initialize TokenStream to analyze multiTerm term: " + part, e);
- }
- TermToBytesRefAttribute termAtt = source.getAttribute(TermToBytesRefAttribute.class);
- BytesRef bytes = termAtt.getBytesRef();
+ TermToBytesRefAttribute termAtt = source.getAttribute(TermToBytesRefAttribute.class);
+ BytesRef bytes = termAtt.getBytesRef();
- try {
if (!source.incrementToken())
throw new IllegalArgumentException("analyzer returned no terms for multiTerm term: " + part);
termAtt.fillBytesRef();
if (source.incrementToken())
throw new IllegalArgumentException("analyzer returned too many terms for multiTerm term: " + part);
- } catch (IOException e) {
- throw new RuntimeException("error analyzing range part: " + part, e);
- }
-
- try {
source.end();
- source.close();
+ return BytesRef.deepCopyOf(bytes);
} catch (IOException e) {
- throw new RuntimeException("Unable to end & close TokenStream after analyzing multiTerm term: " + part, e);
+ throw new RuntimeException("Error analyzing multiTerm term: " + part, e);
}
-
- return BytesRef.deepCopyOf(bytes);
}
/**
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/AnalyzerQueryNodeProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/AnalyzerQueryNodeProcessor.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/AnalyzerQueryNodeProcessor.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/AnalyzerQueryNodeProcessor.java Mon Oct 21 18:58:24 2013
@@ -113,52 +113,44 @@ public class AnalyzerQueryNodeProcessor
String text = fieldNode.getTextAsString();
String field = fieldNode.getFieldAsString();
- TokenStream source;
- try {
- source = this.analyzer.tokenStream(field, text);
- source.reset();
- } catch (IOException e1) {
- throw new RuntimeException(e1);
- }
- CachingTokenFilter buffer = new CachingTokenFilter(source);
-
+ CachingTokenFilter buffer = null;
PositionIncrementAttribute posIncrAtt = null;
int numTokens = 0;
int positionCount = 0;
boolean severalTokensAtSamePosition = false;
+
+ try (TokenStream source = this.analyzer.tokenStream(field, text)) {
+ source.reset();
+ buffer = new CachingTokenFilter(source);
- if (buffer.hasAttribute(PositionIncrementAttribute.class)) {
- posIncrAtt = buffer.getAttribute(PositionIncrementAttribute.class);
- }
+ if (buffer.hasAttribute(PositionIncrementAttribute.class)) {
+ posIncrAtt = buffer.getAttribute(PositionIncrementAttribute.class);
+ }
- try {
+ try {
- while (buffer.incrementToken()) {
- numTokens++;
- int positionIncrement = (posIncrAtt != null) ? posIncrAtt
- .getPositionIncrement() : 1;
- if (positionIncrement != 0) {
- positionCount += positionIncrement;
+ while (buffer.incrementToken()) {
+ numTokens++;
+ int positionIncrement = (posIncrAtt != null) ? posIncrAtt
+ .getPositionIncrement() : 1;
+ if (positionIncrement != 0) {
+ positionCount += positionIncrement;
+
+ } else {
+ severalTokensAtSamePosition = true;
+ }
- } else {
- severalTokensAtSamePosition = true;
}
+ } catch (IOException e) {
+ // ignore
}
-
- } catch (IOException e) {
- // ignore
- }
-
- try {
- // rewind the buffer stream
- buffer.reset();
-
- // close original stream - all tokens buffered
- source.close();
} catch (IOException e) {
- // ignore
+ throw new RuntimeException(e);
}
+
+ // rewind the buffer stream
+ buffer.reset();
if (!buffer.hasAttribute(CharTermAttribute.class)) {
return new NoTokenFoundQueryNode();
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/LikeThisQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/LikeThisQueryBuilder.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/LikeThisQueryBuilder.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/LikeThisQueryBuilder.java Mon Oct 21 18:58:24 2013
@@ -73,8 +73,7 @@ public class LikeThisQueryBuilder implem
if ((stopWords != null) && (fields != null)) {
stopWordsSet = new HashSet<String>();
for (String field : fields) {
- try {
- TokenStream ts = analyzer.tokenStream(field, stopWords);
+ try (TokenStream ts = analyzer.tokenStream(field, stopWords)) {
CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
ts.reset();
while (ts.incrementToken()) {
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanOrTermsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanOrTermsBuilder.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanOrTermsBuilder.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanOrTermsBuilder.java Mon Oct 21 18:58:24 2013
@@ -49,9 +49,9 @@ public class SpanOrTermsBuilder extends
String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
String value = DOMUtils.getNonBlankTextOrFail(e);
- try {
- List<SpanQuery> clausesList = new ArrayList<SpanQuery>();
- TokenStream ts = analyzer.tokenStream(fieldName, value);
+ List<SpanQuery> clausesList = new ArrayList<SpanQuery>();
+
+ try (TokenStream ts = analyzer.tokenStream(fieldName, value)) {
TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
BytesRef bytes = termAtt.getBytesRef();
ts.reset();
@@ -61,7 +61,6 @@ public class SpanOrTermsBuilder extends
clausesList.add(stq);
}
ts.end();
- ts.close();
SpanOrQuery soq = new SpanOrQuery(clausesList.toArray(new SpanQuery[clausesList.size()]));
soq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
return soq;
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsFilterBuilder.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsFilterBuilder.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsFilterBuilder.java Mon Oct 21 18:58:24 2013
@@ -54,8 +54,7 @@ public class TermsFilterBuilder implemen
String text = DOMUtils.getNonBlankTextOrFail(e);
String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
- try {
- TokenStream ts = analyzer.tokenStream(fieldName, text);
+ try (TokenStream ts = analyzer.tokenStream(fieldName, text)) {
TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
BytesRef bytes = termAtt.getBytesRef();
ts.reset();
@@ -64,7 +63,6 @@ public class TermsFilterBuilder implemen
terms.add(BytesRef.deepCopyOf(bytes));
}
ts.end();
- ts.close();
}
catch (IOException ioe) {
throw new RuntimeException("Error constructing terms from index:" + ioe);
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsQueryBuilder.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsQueryBuilder.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsQueryBuilder.java Mon Oct 21 18:58:24 2013
@@ -51,8 +51,7 @@ public class TermsQueryBuilder implement
BooleanQuery bq = new BooleanQuery(DOMUtils.getAttribute(e, "disableCoord", false));
bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e, "minimumNumberShouldMatch", 0));
- try {
- TokenStream ts = analyzer.tokenStream(fieldName, text);
+ try (TokenStream ts = analyzer.tokenStream(fieldName, text)) {
TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
Term term = null;
BytesRef bytes = termAtt.getBytesRef();
@@ -63,7 +62,6 @@ public class TermsQueryBuilder implement
bq.add(new BooleanClause(new TermQuery(term), BooleanClause.Occur.SHOULD));
}
ts.end();
- ts.close();
}
catch (IOException ioe) {
throw new RuntimeException("Error constructing terms from index:" + ioe);
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java Mon Oct 21 18:58:24 2013
@@ -311,7 +311,7 @@ public class TestMultiFieldQueryParser e
MockAnalyzer stdAnalyzer = new MockAnalyzer(random());
public AnalyzerReturningNull() {
- super(new PerFieldReuseStrategy());
+ super(PER_FIELD_REUSE_STRATEGY);
}
@Override
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java Mon Oct 21 18:58:24 2013
@@ -82,6 +82,7 @@ public class TestMultiPhraseQueryParsing
@Override
public void reset() throws IOException {
+ super.reset();
this.upto = 0;
this.lastPos = 0;
}
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java Mon Oct 21 18:58:24 2013
@@ -29,8 +29,8 @@ import java.util.Map;
import java.util.TimeZone;
import org.apache.lucene.analysis.*;
-import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
import org.apache.lucene.queryparser.flexible.core.QueryNodeParseException;
@@ -48,6 +48,8 @@ import org.apache.lucene.search.Wildcard
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.automaton.BasicAutomata;
import org.apache.lucene.util.automaton.CharacterRunAutomaton;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
/**
* <p>
@@ -64,7 +66,17 @@ import org.apache.lucene.util.automaton.
//that it adjusts to fit the precedence requirement, adding its extra tests.
public class TestPrecedenceQueryParser extends LuceneTestCase {
- public static Analyzer qpAnalyzer = new QPTestAnalyzer();
+ public static Analyzer qpAnalyzer;
+
+ @BeforeClass
+ public static void beforeClass() {
+ qpAnalyzer = new QPTestAnalyzer();
+ }
+
+ @AfterClass
+ public static void afterClass() {
+ qpAnalyzer = null;
+ }
public static final class QPTestFilter extends TokenFilter {
/**
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java Mon Oct 21 18:58:24 2013
@@ -347,7 +347,7 @@ public class TestMultiFieldQPHelper exte
MockAnalyzer stdAnalyzer = new MockAnalyzer(random());
public AnalyzerReturningNull() {
- super(new PerFieldReuseStrategy());
+ super(PER_FIELD_REUSE_STRATEGY);
}
@Override
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java Mon Oct 21 18:58:24 2013
@@ -525,6 +525,7 @@ public class TestNumericQueryParser exte
reader = null;
directory.close();
directory = null;
+ qp = null;
}
}
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java Mon Oct 21 18:58:24 2013
@@ -70,6 +70,8 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.util.automaton.BasicAutomata;
import org.apache.lucene.util.automaton.CharacterRunAutomaton;
import org.apache.lucene.util.automaton.RegExp;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Ignore;
/**
@@ -81,7 +83,17 @@ import org.junit.Ignore;
// TODO: really this should extend QueryParserTestBase too!
public class TestQPHelper extends LuceneTestCase {
- public static Analyzer qpAnalyzer = new QPTestAnalyzer();
+ public static Analyzer qpAnalyzer;
+
+ @BeforeClass
+ public static void beforeClass() {
+ qpAnalyzer = new QPTestAnalyzer();
+ }
+
+ @AfterClass
+ public static void afterClass() {
+ qpAnalyzer = null;
+ }
public static final class QPTestFilter extends TokenFilter {
private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java Mon Oct 21 18:58:24 2013
@@ -41,8 +41,8 @@ import org.apache.lucene.index.Term;
//import org.apache.lucene.queryparser.classic.ParseException;
//import org.apache.lucene.queryparser.classic.QueryParser;
//import org.apache.lucene.queryparser.classic.QueryParserBase;
-//import org.apache.lucene.queryparser.classic.QueryParserTokenManager;
import org.apache.lucene.queryparser.classic.QueryParserBase;
+//import org.apache.lucene.queryparser.classic.QueryParserTokenManager;
import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanClause.Occur;
@@ -51,6 +51,8 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.util.automaton.BasicAutomata;
import org.apache.lucene.util.automaton.CharacterRunAutomaton;
import org.apache.lucene.util.automaton.RegExp;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
/**
* Base Test class for QueryParser subclasses
@@ -59,8 +61,18 @@ import org.apache.lucene.util.automaton.
// to the core QP and subclass/use the parts that are not in the flexible QP
public abstract class QueryParserTestBase extends LuceneTestCase {
- public static Analyzer qpAnalyzer = new QPTestAnalyzer();
+ public static Analyzer qpAnalyzer;
+
+ @BeforeClass
+ public static void beforeClass() {
+ qpAnalyzer = new QPTestAnalyzer();
+ }
+ @AfterClass
+ public static void afterClass() {
+ qpAnalyzer = null;
+ }
+
public static final class QPTestFilter extends TokenFilter {
CharTermAttribute termAtt;
OffsetAttribute offsetAtt;
@@ -102,7 +114,6 @@ public abstract class QueryParserTestBas
}
}
-
public static final class QPTestAnalyzer extends Analyzer {
/** Filters MockTokenizer with StopFilter. */
Modified: lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java (original)
+++ lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java Mon Oct 21 18:58:24 2013
@@ -64,7 +64,7 @@ public class TestNumericRangeFilterBuild
IndexWriter writer = new IndexWriter(ramDir, newIndexWriterConfig(TEST_VERSION_CURRENT, null));
writer.commit();
try {
- AtomicReader reader = new SlowCompositeReaderWrapper(DirectoryReader.open(ramDir));
+ AtomicReader reader = SlowCompositeReaderWrapper.wrap(DirectoryReader.open(ramDir));
try {
assertNull(filter.getDocIdSet(reader.getContext(), reader.getLiveDocs()));
}
Modified: lucene/dev/branches/lucene4956/lucene/replicator/ivy.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/replicator/ivy.xml?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/replicator/ivy.xml (original)
+++ lucene/dev/branches/lucene4956/lucene/replicator/ivy.xml Mon Oct 21 18:58:24 2013
@@ -31,16 +31,16 @@
</configurations>
<dependencies>
- <dependency org="org.apache.httpcomponents" name="httpclient" rev="4.2.3" transitive="false" conf="http->default"/>
- <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.2.2" transitive="false" conf="http->default"/>
- <dependency org="org.eclipse.jetty" name="jetty-server" rev="&jetty.version;" transitive="false" conf="jetty->default"/>
- <dependency org="org.eclipse.jetty" name="jetty-servlet" rev="&jetty.version;" transitive="false" conf="jetty->default"/>
- <dependency org="org.eclipse.jetty" name="jetty-util" rev="&jetty.version;" transitive="false" conf="jetty->default"/>
- <dependency org="org.eclipse.jetty" name="jetty-io" rev="&jetty.version;" transitive="false" conf="jetty->default"/>
- <dependency org="org.eclipse.jetty" name="jetty-continuation" rev="&jetty.version;" transitive="false" conf="jetty->default"/>
- <dependency org="org.eclipse.jetty" name="jetty-http" rev="&jetty.version;" transitive="false" conf="jetty->default"/>
- <dependency org="commons-logging" name="commons-logging" rev="1.1.1" transitive="false" conf="logging->default"/>
- <dependency org="org.eclipse.jetty.orbit" name="javax.servlet" rev="3.0.0.v201112011016" transitive="false" conf="servlet->default">
+ <dependency org="org.apache.httpcomponents" name="httpclient" rev="${/org.apache.httpcomponents/httpclient}" transitive="false" conf="http->default"/>
+ <dependency org="org.apache.httpcomponents" name="httpcore" rev="${/org.apache.httpcomponents/httpcore}" transitive="false" conf="http->default"/>
+ <dependency org="org.eclipse.jetty" name="jetty-server" rev="${/org.eclipse.jetty/jetty-server}" transitive="false" conf="jetty->default"/>
+ <dependency org="org.eclipse.jetty" name="jetty-servlet" rev="${/org.eclipse.jetty/jetty-servlet}" transitive="false" conf="jetty->default"/>
+ <dependency org="org.eclipse.jetty" name="jetty-util" rev="${/org.eclipse.jetty/jetty-util}" transitive="false" conf="jetty->default"/>
+ <dependency org="org.eclipse.jetty" name="jetty-io" rev="${/org.eclipse.jetty/jetty-io}" transitive="false" conf="jetty->default"/>
+ <dependency org="org.eclipse.jetty" name="jetty-continuation" rev="${/org.eclipse.jetty/jetty-continuation}" transitive="false" conf="jetty->default"/>
+ <dependency org="org.eclipse.jetty" name="jetty-http" rev="${/org.eclipse.jetty/jetty-http}" transitive="false" conf="jetty->default"/>
+ <dependency org="commons-logging" name="commons-logging" rev="${/commons-logging/commons-logging}" transitive="false" conf="logging->default"/>
+ <dependency org="org.eclipse.jetty.orbit" name="javax.servlet" rev="${/org.eclipse.jetty.orbit/javax.servlet}" transitive="false" conf="servlet->default">
<artifact name="javax.servlet" type="orbit" ext="jar"/>
</dependency>
<exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}"/>
Modified: lucene/dev/branches/lucene4956/lucene/sandbox/ivy.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/sandbox/ivy.xml?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/sandbox/ivy.xml (original)
+++ lucene/dev/branches/lucene4956/lucene/sandbox/ivy.xml Mon Oct 21 18:58:24 2013
@@ -19,7 +19,7 @@
<ivy-module version="2.0">
<info organisation="org.apache.lucene" module="sandbox"/>
<dependencies>
- <dependency org="jakarta-regexp" name="jakarta-regexp" rev="1.4" transitive="false"/>
+ <dependency org="jakarta-regexp" name="jakarta-regexp" rev="${/jakarta-regexp/jakarta-regexp}" transitive="false"/>
<exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}"/>
</dependencies>
</ivy-module>
Modified: lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java (original)
+++ lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java Mon Oct 21 18:58:24 2013
@@ -193,67 +193,67 @@ public class FuzzyLikeThisQuery extends
private void addTerms(IndexReader reader, FieldVals f) throws IOException {
if (f.queryString == null) return;
- TokenStream ts = analyzer.tokenStream(f.fieldName, f.queryString);
- CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
-
- int corpusNumDocs = reader.numDocs();
- HashSet<String> processedTerms = new HashSet<String>();
- ts.reset();
final Terms terms = MultiFields.getTerms(reader, f.fieldName);
if (terms == null) {
return;
}
- while (ts.incrementToken()) {
- String term = termAtt.toString();
- if (!processedTerms.contains(term)) {
- processedTerms.add(term);
- ScoreTermQueue variantsQ = new ScoreTermQueue(MAX_VARIANTS_PER_TERM); //maxNum variants considered for any one term
- float minScore = 0;
- Term startTerm = new Term(f.fieldName, term);
- AttributeSource atts = new AttributeSource();
- MaxNonCompetitiveBoostAttribute maxBoostAtt =
+ try (TokenStream ts = analyzer.tokenStream(f.fieldName, f.queryString)) {
+ CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
+
+ int corpusNumDocs = reader.numDocs();
+ HashSet<String> processedTerms = new HashSet<String>();
+ ts.reset();
+ while (ts.incrementToken()) {
+ String term = termAtt.toString();
+ if (!processedTerms.contains(term)) {
+ processedTerms.add(term);
+ ScoreTermQueue variantsQ = new ScoreTermQueue(MAX_VARIANTS_PER_TERM); //maxNum variants considered for any one term
+ float minScore = 0;
+ Term startTerm = new Term(f.fieldName, term);
+ AttributeSource atts = new AttributeSource();
+ MaxNonCompetitiveBoostAttribute maxBoostAtt =
atts.addAttribute(MaxNonCompetitiveBoostAttribute.class);
- SlowFuzzyTermsEnum fe = new SlowFuzzyTermsEnum(terms, atts, startTerm, f.minSimilarity, f.prefixLength);
- //store the df so all variants use same idf
- int df = reader.docFreq(startTerm);
- int numVariants = 0;
- int totalVariantDocFreqs = 0;
- BytesRef possibleMatch;
- BoostAttribute boostAtt =
+ SlowFuzzyTermsEnum fe = new SlowFuzzyTermsEnum(terms, atts, startTerm, f.minSimilarity, f.prefixLength);
+ //store the df so all variants use same idf
+ int df = reader.docFreq(startTerm);
+ int numVariants = 0;
+ int totalVariantDocFreqs = 0;
+ BytesRef possibleMatch;
+ BoostAttribute boostAtt =
fe.attributes().addAttribute(BoostAttribute.class);
- while ((possibleMatch = fe.next()) != null) {
- numVariants++;
- totalVariantDocFreqs += fe.docFreq();
- float score = boostAtt.getBoost();
- if (variantsQ.size() < MAX_VARIANTS_PER_TERM || score > minScore) {
- ScoreTerm st = new ScoreTerm(new Term(startTerm.field(), BytesRef.deepCopyOf(possibleMatch)), score, startTerm);
- variantsQ.insertWithOverflow(st);
- minScore = variantsQ.top().score; // maintain minScore
+ while ((possibleMatch = fe.next()) != null) {
+ numVariants++;
+ totalVariantDocFreqs += fe.docFreq();
+ float score = boostAtt.getBoost();
+ if (variantsQ.size() < MAX_VARIANTS_PER_TERM || score > minScore) {
+ ScoreTerm st = new ScoreTerm(new Term(startTerm.field(), BytesRef.deepCopyOf(possibleMatch)), score, startTerm);
+ variantsQ.insertWithOverflow(st);
+ minScore = variantsQ.top().score; // maintain minScore
+ }
+ maxBoostAtt.setMaxNonCompetitiveBoost(variantsQ.size() >= MAX_VARIANTS_PER_TERM ? minScore : Float.NEGATIVE_INFINITY);
}
- maxBoostAtt.setMaxNonCompetitiveBoost(variantsQ.size() >= MAX_VARIANTS_PER_TERM ? minScore : Float.NEGATIVE_INFINITY);
- }
- if (numVariants > 0) {
- int avgDf = totalVariantDocFreqs / numVariants;
- if (df == 0)//no direct match we can use as df for all variants
- {
- df = avgDf; //use avg df of all variants
- }
+ if (numVariants > 0) {
+ int avgDf = totalVariantDocFreqs / numVariants;
+ if (df == 0)//no direct match we can use as df for all variants
+ {
+ df = avgDf; //use avg df of all variants
+ }
- // take the top variants (scored by edit distance) and reset the score
- // to include an IDF factor then add to the global queue for ranking
- // overall top query terms
- int size = variantsQ.size();
- for (int i = 0; i < size; i++) {
- ScoreTerm st = variantsQ.pop();
- st.score = (st.score * st.score) * sim.idf(df, corpusNumDocs);
- q.insertWithOverflow(st);
+ // take the top variants (scored by edit distance) and reset the score
+ // to include an IDF factor then add to the global queue for ranking
+ // overall top query terms
+ int size = variantsQ.size();
+ for (int i = 0; i < size; i++) {
+ ScoreTerm st = variantsQ.pop();
+ st.score = (st.score * st.score) * sim.idf(df, corpusNumDocs);
+ q.insertWithOverflow(st);
+ }
}
}
}
+ ts.end();
}
- ts.end();
- ts.close();
}
@Override
Modified: lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java (original)
+++ lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java Mon Oct 21 18:58:24 2013
@@ -24,6 +24,7 @@ import org.apache.lucene.index.AtomicRea
import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.FieldComparator;
+import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
/** Sorts by a field's value using the given Collator
@@ -39,6 +40,7 @@ public final class SlowCollatedStringCom
private final String[] values;
private BinaryDocValues currentDocTerms;
+ private Bits docsWithField;
private final String field;
final Collator collator;
private String bottom;
@@ -68,7 +70,7 @@ public final class SlowCollatedStringCom
@Override
public int compareBottom(int doc) {
currentDocTerms.get(doc, tempBR);
- final String val2 = tempBR.bytes == BinaryDocValues.MISSING ? null : tempBR.utf8ToString();
+ final String val2 = tempBR.length == 0 && docsWithField.get(doc) == false ? null : tempBR.utf8ToString();
if (bottom == null) {
if (val2 == null) {
return 0;
@@ -83,7 +85,7 @@ public final class SlowCollatedStringCom
@Override
public void copy(int slot, int doc) {
currentDocTerms.get(doc, tempBR);
- if (tempBR.bytes == BinaryDocValues.MISSING) {
+ if (tempBR.length == 0 && docsWithField.get(doc) == false) {
values[slot] = null;
} else {
values[slot] = tempBR.utf8ToString();
@@ -92,7 +94,8 @@ public final class SlowCollatedStringCom
@Override
public FieldComparator<String> setNextReader(AtomicReaderContext context) throws IOException {
- currentDocTerms = FieldCache.DEFAULT.getTerms(context.reader(), field);
+ currentDocTerms = FieldCache.DEFAULT.getTerms(context.reader(), field, true);
+ docsWithField = FieldCache.DEFAULT.getDocsWithField(context.reader(), field);
return this;
}
@@ -124,7 +127,7 @@ public final class SlowCollatedStringCom
public int compareDocToValue(int doc, String value) {
currentDocTerms.get(doc, tempBR);
final String docValue;
- if (tempBR.bytes == BinaryDocValues.MISSING) {
+ if (tempBR.length == 0 && docsWithField.get(doc) == false) {
docValue = null;
} else {
docValue = tempBR.utf8ToString();
Modified: lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java (original)
+++ lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java Mon Oct 21 18:58:24 2013
@@ -17,7 +17,6 @@ package org.apache.lucene.sandbox.querie
* limitations under the License.
*/
-import java.io.IOException;
import java.text.Collator;
import org.apache.lucene.index.TermsEnum;
@@ -28,7 +27,7 @@ import org.apache.lucene.util.BytesRef;
* Subclass of FilteredTermEnum for enumerating all terms that match the
* specified range parameters.
* <p>Term enumerations are always ordered by
- * {@link #getComparator}. Each term in the enumeration is
+ * {@link BytesRef#compareTo}. Each term in the enumeration is
* greater than all that precede it.</p>
* @deprecated Index collation keys with CollationKeyAnalyzer or ICUCollationKeyAnalyzer instead.
* This class will be removed in Lucene 5.0
Modified: lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java (original)
+++ lucene/dev/branches/lucene4956/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java Mon Oct 21 18:58:24 2013
@@ -38,7 +38,7 @@ import org.apache.lucene.util.UnicodeUti
* fuzzy terms enum method by calling FuzzyTermsEnum's getAutomatonEnum.
* </p>
* <p>Term enumerations are always ordered by
- * {@link #getComparator}. Each term in the enumeration is
+ * {@link BytesRef#compareTo}. Each term in the enumeration is
* greater than all that precede it.</p>
*
* @deprecated Use {@link FuzzyTermsEnum} instead.
Modified: lucene/dev/branches/lucene4956/lucene/site/changes/changes2html.pl
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/site/changes/changes2html.pl?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/site/changes/changes2html.pl (original)
+++ lucene/dev/branches/lucene4956/lucene/site/changes/changes2html.pl Mon Oct 21 18:58:24 2013
@@ -195,7 +195,7 @@ for (my $line_num = 0 ; $line_num <= $#l
my $line;
my $item = $_;
$item =~ s/^(\s*\Q$type\E\s*)//; # Trim the leading bullet
- my $leading_ws_width = length($1);
+ my $leading_ws_width = defined($1) ? length($1) : 0;
$item =~ s/\s+$//; # Trim trailing whitespace
$item .= "\n";
Modified: lucene/dev/branches/lucene4956/lucene/site/xsl/index.xsl
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/site/xsl/index.xsl?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/site/xsl/index.xsl (original)
+++ lucene/dev/branches/lucene4956/lucene/site/xsl/index.xsl Mon Oct 21 18:58:24 2013
@@ -75,7 +75,7 @@
<li><a href="SYSTEM_REQUIREMENTS.html">System Requirements</a>: Minimum and supported Java versions.</li>
<li><a href="MIGRATE.html">Migration Guide</a>: What changed in Lucene 4; how to migrate code from Lucene 3.x.</li>
<li><a href="JRE_VERSION_MIGRATION.html">JRE Version Migration</a>: Information about upgrading between major JRE versions.</li>
- <li><a href="core/org/apache/lucene/codecs/lucene42/package-summary.html#package_description">File Formats</a>: Guide to the supported index format used by Lucene. This can be customized by using <a href="core/org/apache/lucene/codecs/package-summary.html#package_description">an alternate codec</a>.</li>
+ <li><a href="core/org/apache/lucene/codecs/lucene45/package-summary.html#package_description">File Formats</a>: Guide to the supported index format used by Lucene. This can be customized by using <a href="core/org/apache/lucene/codecs/package-summary.html#package_description">an alternate codec</a>.</li>
<li><a href="core/org/apache/lucene/search/package-summary.html#package_description">Search and Scoring in Lucene</a>: Introduction to how Lucene scores documents.</li>
<li><a href="core/org/apache/lucene/search/similarities/TFIDFSimilarity.html">Classic Scoring Formula</a>: Formula of Lucene's classic <a href="http://en.wikipedia.org/wiki/Vector_Space_Model">Vector Space</a> implementation. (look <a href="core/org/apache/lucene/search/similarities/package-summary.html#package_description">here</a> for other models)</li>
<li><a href="queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_description">Classic QueryParser Syntax</a>: Overview of the Classic QueryParser's syntax and features.</li>
Modified: lucene/dev/branches/lucene4956/lucene/spatial/ivy.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/spatial/ivy.xml?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/spatial/ivy.xml (original)
+++ lucene/dev/branches/lucene4956/lucene/spatial/ivy.xml Mon Oct 21 18:58:24 2013
@@ -19,7 +19,7 @@
<ivy-module version="2.0">
<info organisation="org.apache.lucene" module="spatial"/>
<dependencies>
- <dependency org="com.spatial4j" name="spatial4j" rev="0.3" transitive="false"/>
+ <dependency org="com.spatial4j" name="spatial4j" rev="${/com.spatial4j/spatial4j}" transitive="false"/>
<exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}"/>
</dependencies>
</ivy-module>
Modified: lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java (original)
+++ lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java Mon Oct 21 18:58:24 2013
@@ -78,10 +78,12 @@ public class BBoxSimilarityValueSource e
@Override
public float floatVal(int doc) {
+ double minXVal = minX.get(doc);
+ double maxXVal = maxX.get(doc);
// make sure it has minX and area
- if (validMinX.get(doc) && validMaxX.get(doc)) {
+ if ((minXVal != 0 || validMinX.get(doc)) && (maxXVal != 0 || validMaxX.get(doc))) {
rect.reset(
- minX.get(doc), maxX.get(doc),
+ minXVal, maxXVal,
minY.get(doc), maxY.get(doc));
return (float) similarity.score(rect, null);
} else {
Modified: lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/package.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/package.html?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/package.html (original)
+++ lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/package.html Mon Oct 21 18:58:24 2013
@@ -17,8 +17,5 @@
<html>
<body>
Lucene spatial search
-<p>
-Check:
-http://blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves
</body>
</html>
Modified: lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/AbstractVisitingPrefixTreeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/AbstractVisitingPrefixTreeFilter.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/AbstractVisitingPrefixTreeFilter.java (original)
+++ lucene/dev/branches/lucene4956/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/AbstractVisitingPrefixTreeFilter.java Mon Oct 21 18:58:24 2013
@@ -17,7 +17,9 @@ package org.apache.lucene.spatial.prefix
* limitations under the License.
*/
-import com.spatial4j.core.shape.Shape;
+import java.io.IOException;
+import java.util.Iterator;
+
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.DocIdSet;
@@ -26,9 +28,7 @@ import org.apache.lucene.spatial.prefix.
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.StringHelper;
-
-import java.io.IOException;
-import java.util.Iterator;
+import com.spatial4j.core.shape.Shape;
/**
* Traverses a {@link SpatialPrefixTree} indexed field, using the template &
@@ -176,7 +176,7 @@ public abstract class AbstractVisitingPr
//Seek to curVNode's cell (or skip if termsEnum has moved beyond)
curVNodeTerm.bytes = curVNode.cell.getTokenBytes();
curVNodeTerm.length = curVNodeTerm.bytes.length;
- int compare = termsEnum.getComparator().compare(thisTerm, curVNodeTerm);
+ int compare = thisTerm.compareTo(curVNodeTerm);
if (compare > 0) {
// leap frog (termsEnum is beyond where we would otherwise seek)
assert ! context.reader().terms(fieldName).iterator(null).seekExact(curVNodeTerm) : "should be absent";
Modified: lucene/dev/branches/lucene4956/lucene/suggest/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/suggest/build.xml?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/suggest/build.xml (original)
+++ lucene/dev/branches/lucene4956/lucene/suggest/build.xml Mon Oct 21 18:58:24 2013
@@ -31,9 +31,21 @@
<path id="classpath">
<pathelement path="${analyzers-common.jar}"/>
<pathelement path="${misc.jar}"/>
+ <pathelement path="${expressions.jar}"/>
+ <pathelement path="${queries.jar}"/>
+ <fileset dir="${common.dir}/expressions/lib"/>
<path refid="base.classpath"/>
</path>
- <target name="compile-core" depends="jar-misc, jar-analyzers-common, common.compile-core" />
+
+ <target name="javadocs" depends="javadocs-queries,compile-core">
+ <invoke-module-javadoc>
+ <links>
+ <link href="../analyzers-common"/>
+ </links>
+ </invoke-module-javadoc>
+ </target>
+
+ <target name="compile-core" depends="jar-expressions, jar-misc, jar-analyzers-common, common.compile-core" />
</project>
Modified: lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/HighFrequencyDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/HighFrequencyDictionary.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/HighFrequencyDictionary.java (original)
+++ lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/HighFrequencyDictionary.java Mon Oct 21 18:58:24 2013
@@ -18,12 +18,12 @@
package org.apache.lucene.search.spell;
import java.io.IOException;
-import java.util.Comparator;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.search.suggest.InputIterator;
import org.apache.lucene.util.BytesRefIterator;
import org.apache.lucene.util.BytesRef;
@@ -60,7 +60,7 @@ public class HighFrequencyDictionary imp
return new HighFrequencyIterator();
}
- final class HighFrequencyIterator implements TermFreqIterator {
+ final class HighFrequencyIterator implements InputIterator {
private final BytesRef spare = new BytesRef();
private final TermsEnum termsEnum;
private int minNumDocs;
@@ -101,12 +101,13 @@ public class HighFrequencyDictionary imp
}
@Override
- public Comparator<BytesRef> getComparator() {
- if (termsEnum == null) {
- return null;
- } else {
- return termsEnum.getComparator();
- }
+ public BytesRef payload() {
+ return null;
+ }
+
+ @Override
+ public boolean hasPayloads() {
+ return false;
}
}
}
Modified: lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/PlainTextDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/PlainTextDictionary.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/PlainTextDictionary.java (original)
+++ lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/spell/PlainTextDictionary.java Mon Oct 21 18:58:24 2013
@@ -17,9 +17,11 @@ package org.apache.lucene.search.spell;
* limitations under the License.
*/
-
-import java.util.Comparator;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefIterator;
@@ -96,11 +98,5 @@ public class PlainTextDictionary impleme
}
return result;
}
-
- @Override
- public Comparator<BytesRef> getComparator() {
- return null;
- }
}
-
}
Modified: lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefArray.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefArray.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefArray.java (original)
+++ lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefArray.java Mon Oct 21 18:58:24 2013
@@ -187,11 +187,6 @@ public final class BytesRefArray {
}
return null;
}
-
- @Override
- public Comparator<BytesRef> getComparator() {
- return comp;
- }
};
}
}
Modified: lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java?rev=1534320&r1=1534319&r2=1534320&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java (original)
+++ lucene/dev/branches/lucene4956/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java Mon Oct 21 18:58:24 2013
@@ -19,10 +19,8 @@ package org.apache.lucene.search.suggest
import java.io.*;
-import java.util.Comparator;
import org.apache.lucene.search.spell.Dictionary;
-import org.apache.lucene.search.spell.TermFreqIterator;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.IOUtils;
@@ -58,11 +56,11 @@ public class FileDictionary implements D
}
@Override
- public TermFreqIterator getWordsIterator() {
+ public InputIterator getWordsIterator() {
return new FileIterator();
}
- final class FileIterator implements TermFreqIterator {
+ final class FileIterator implements InputIterator {
private long curFreq;
private final BytesRef spare = new BytesRef();
@@ -101,9 +99,13 @@ public class FileDictionary implements D
}
@Override
- public Comparator<BytesRef> getComparator() {
+ public BytesRef payload() {
return null;
}
- }
+ @Override
+ public boolean hasPayloads() {
+ return false;
+ }
+ }
}