diff --git a/CHANGES.txt b/CHANGES.txt index 1ffc657d7b9..5c1f33412a3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -62,6 +62,9 @@ API Changes Make new Sort(SortField...) and Sort.setSort(SortField...) varargs- enabled. (Uwe Schindler) +* LUCENE-1977: Remove deprecated Term field and accessors in + MultiTermQuery. (Uwe Schindler) + Bug fixes * LUCENE-1951: When the text provided to WildcardQuery has no wildcard diff --git a/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java b/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java index f3a67d8e12d..80498742bff 100644 --- a/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java +++ b/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java @@ -31,20 +31,7 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; import org.apache.lucene.index.memory.MemoryIndex; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DisjunctionMaxQuery; -import org.apache.lucene.search.FilteredQuery; -import org.apache.lucene.search.FuzzyQuery; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.MultiPhraseQuery; -import org.apache.lucene.search.MultiTermQuery; -import org.apache.lucene.search.PhraseQuery; -import org.apache.lucene.search.PrefixQuery; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.TermQuery; -import org.apache.lucene.search.TermRangeQuery; -import org.apache.lucene.search.WildcardQuery; +import org.apache.lucene.search.*; import org.apache.lucene.search.spans.SpanNearQuery; import org.apache.lucene.search.spans.SpanOrQuery; import org.apache.lucene.search.spans.SpanQuery; @@ -141,14 +128,20 @@ public class WeightedSpanTermExtractor { mtq.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE); query = mtq; } - String field; + String field = null; if(mtq instanceof TermRangeQuery) { field = ((TermRangeQuery)mtq).getField(); - } else { - field = mtq.getTerm().field(); + } else if (mtq instanceof PrefixQuery) { + field = ((PrefixQuery) mtq).getPrefix().field(); + } else if (mtq instanceof WildcardQuery) { + field = ((WildcardQuery) mtq).getTerm().field(); + } else if (mtq instanceof FuzzyQuery) { + field = ((FuzzyQuery) mtq).getTerm().field(); + } + if (field != null) { + IndexReader ir = getReaderForField(field); + extract(query.rewrite(ir), terms); } - IndexReader ir = getReaderForField(field); - extract(query.rewrite(ir), terms); } else if (query instanceof MultiPhraseQuery) { final MultiPhraseQuery mpq = (MultiPhraseQuery) query; final List termArrays = mpq.getTermArrays(); @@ -457,11 +450,11 @@ public class WeightedSpanTermExtractor { q.setBoost(query.getBoost()); return new TermRangeQuery(q.getField(), q.getLowerTerm(), q.getUpperTerm(), q.includesLower(), q.includesUpper()); } else if(query instanceof WildcardQuery) { - MultiTermQuery q = new WildcardQuery(query.getTerm()); + MultiTermQuery q = new WildcardQuery(((WildcardQuery) query).getTerm()); q.setBoost(query.getBoost()); return q; } else if(query instanceof PrefixQuery) { - MultiTermQuery q = new PrefixQuery(query.getTerm()); + MultiTermQuery q = new PrefixQuery(((PrefixQuery) query).getPrefix()); q.setBoost(q.getBoost()); return q; } else if(query instanceof FuzzyQuery) { diff --git a/contrib/regex/src/java/org/apache/lucene/search/regex/RegexQuery.java b/contrib/regex/src/java/org/apache/lucene/search/regex/RegexQuery.java index 993d61a6716..fd2ff9be1ee 100644 --- a/contrib/regex/src/java/org/apache/lucene/search/regex/RegexQuery.java +++ b/contrib/regex/src/java/org/apache/lucene/search/regex/RegexQuery.java @@ -21,6 +21,7 @@ import org.apache.lucene.search.MultiTermQuery; import org.apache.lucene.search.FilteredTermEnum; import org.apache.lucene.index.Term; import org.apache.lucene.index.IndexReader; +import org.apache.lucene.util.ToStringUtils; import java.io.IOException; @@ -32,11 +33,14 @@ import java.io.IOException; */ public class RegexQuery extends MultiTermQuery implements RegexQueryCapable { private RegexCapabilities regexImpl = new JavaUtilRegexCapabilities(); + private Term term; /** Constructs a query for terms matching term. */ public RegexQuery(Term term) { - super(term); + this.term = term; } + + public Term getTerm() { return term; } /** * Defines which {@link RegexCapabilities} implementation is used by this instance. @@ -55,10 +59,20 @@ public class RegexQuery extends MultiTermQuery implements RegexQueryCapable { } protected FilteredTermEnum getEnum(IndexReader reader) throws IOException { - Term term = new Term(getTerm().field(), getTerm().text()); return new RegexTermEnum(reader, term, regexImpl); } + public String toString(String field) { + StringBuilder buffer = new StringBuilder(); + if (!term.field().equals(field)) { + buffer.append(term.field()); + buffer.append(":"); + } + buffer.append(term.text()); + buffer.append(ToStringUtils.boost(getBoost())); + return buffer.toString(); + } + /* generated by IntelliJ IDEA */ public boolean equals(Object o) { if (this == o) return true; diff --git a/src/java/org/apache/lucene/search/FuzzyQuery.java b/src/java/org/apache/lucene/search/FuzzyQuery.java index 56aab985095..b6391db34ca 100644 --- a/src/java/org/apache/lucene/search/FuzzyQuery.java +++ b/src/java/org/apache/lucene/search/FuzzyQuery.java @@ -60,7 +60,6 @@ public class FuzzyQuery extends MultiTermQuery { * or if prefixLength < 0 */ public FuzzyQuery(Term term, float minimumSimilarity, int prefixLength) throws IllegalArgumentException { - super(term); // will be removed in 3.0 this.term = term; if (minimumSimilarity >= 1.0f) @@ -125,6 +124,7 @@ public class FuzzyQuery extends MultiTermQuery { throw new UnsupportedOperationException("FuzzyQuery cannot change rewrite method"); } + @Override public Query rewrite(IndexReader reader) throws IOException { if(!termLongEnough) { // can't match return new BooleanQuery(); @@ -195,18 +195,14 @@ public class FuzzyQuery extends MultiTermQuery { } } - protected static class ScoreTermQueue extends PriorityQueue { + protected static class ScoreTermQueue extends PriorityQueue { public ScoreTermQueue(int size){ initialize(size); } - /* (non-Javadoc) - * @see org.apache.lucene.util.PriorityQueue#lessThan(java.lang.Object, java.lang.Object) - */ - protected boolean lessThan(Object a, Object b) { - ScoreTerm termA = (ScoreTerm)a; - ScoreTerm termB = (ScoreTerm)b; + @Override + protected boolean lessThan(ScoreTerm termA, ScoreTerm termB) { if (termA.score == termB.score) return termA.term.compareTo(termB.term) > 0; else @@ -215,6 +211,7 @@ public class FuzzyQuery extends MultiTermQuery { } + @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); @@ -224,6 +221,7 @@ public class FuzzyQuery extends MultiTermQuery { return result; } + @Override public boolean equals(Object obj) { if (this == obj) return true; diff --git a/src/java/org/apache/lucene/search/MultiTermQuery.java b/src/java/org/apache/lucene/search/MultiTermQuery.java index 05ea39a8d50..e3a394c809b 100644 --- a/src/java/org/apache/lucene/search/MultiTermQuery.java +++ b/src/java/org/apache/lucene/search/MultiTermQuery.java @@ -58,8 +58,6 @@ import org.apache.lucene.queryParser.QueryParser; // for javadoc * #CONSTANT_SCORE_AUTO_REWRITE_DEFAULT} by default. */ public abstract class MultiTermQuery extends Query { - /* @deprecated move to sub class */ - protected Term term; protected RewriteMethod rewriteMethod = CONSTANT_SCORE_AUTO_REWRITE_DEFAULT; transient int numberOfTerms = 0; @@ -321,15 +319,6 @@ public abstract class MultiTermQuery extends Query { } }; - /** - * Constructs a query for terms matching term. - * @deprecated check sub class for possible term access - the Term does not - * make sense for all MultiTermQuerys and will be removed. - */ - public MultiTermQuery(Term term) { - this.term = term; - } - /** * Constructs a query matching terms that cannot be represented with a single * Term. @@ -337,15 +326,6 @@ public abstract class MultiTermQuery extends Query { public MultiTermQuery() { } - /** - * Returns the pattern term. - * @deprecated check sub class for possible term access - getTerm does not - * make sense for all MultiTermQuerys and will be removed. - */ - public Term getTerm() { - return term; - } - /** Construct the enumeration to be used, expanding the pattern term. */ protected abstract FilteredTermEnum getEnum(IndexReader reader) throws IOException; @@ -386,27 +366,6 @@ public abstract class MultiTermQuery extends Query { return rewriteMethod.rewrite(reader, this); } - - /* Prints a user-readable version of this query. - * Implemented for back compat in case MultiTermQuery - * subclasses do no implement. - */ - @Override - public String toString(String field) { - StringBuilder buffer = new StringBuilder(); - if (term != null) { - if (!term.field().equals(field)) { - buffer.append(term.field()); - buffer.append(":"); - } - buffer.append(term.text()); - } else { - buffer.append("termPattern:unknown"); - } - buffer.append(ToStringUtils.boost(getBoost())); - return buffer.toString(); - } - /** * @see #setRewriteMethod */ diff --git a/src/java/org/apache/lucene/search/PrefixQuery.java b/src/java/org/apache/lucene/search/PrefixQuery.java index 22bba64f1cb..0cb7679c439 100644 --- a/src/java/org/apache/lucene/search/PrefixQuery.java +++ b/src/java/org/apache/lucene/search/PrefixQuery.java @@ -34,7 +34,6 @@ public class PrefixQuery extends MultiTermQuery { /** Constructs a query for terms starting with prefix. */ public PrefixQuery(Term prefix) { - super(prefix); //will be removed in 3.0 this.prefix = prefix; } @@ -46,6 +45,7 @@ public class PrefixQuery extends MultiTermQuery { } /** Prints a user-readable version of this query. */ + @Override public String toString(String field) { StringBuilder buffer = new StringBuilder(); if (!prefix.field().equals(field)) { @@ -58,7 +58,7 @@ public class PrefixQuery extends MultiTermQuery { return buffer.toString(); } - //@Override + @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); @@ -66,7 +66,7 @@ public class PrefixQuery extends MultiTermQuery { return result; } - //@Override + @Override public boolean equals(Object obj) { if (this == obj) return true; diff --git a/src/java/org/apache/lucene/search/WildcardQuery.java b/src/java/org/apache/lucene/search/WildcardQuery.java index 0498cecb7d8..f1294dda2b8 100644 --- a/src/java/org/apache/lucene/search/WildcardQuery.java +++ b/src/java/org/apache/lucene/search/WildcardQuery.java @@ -41,7 +41,6 @@ public class WildcardQuery extends MultiTermQuery { protected Term term; public WildcardQuery(Term term) { - super(term); //will be removed in 3.0 this.term = term; String text = term.text(); this.termContainsWildcard = (text.indexOf('*') != -1) @@ -65,6 +64,7 @@ public class WildcardQuery extends MultiTermQuery { return term; } + @Override public Query rewrite(IndexReader reader) throws IOException { if (termIsPrefix) { MultiTermQuery rewritten = new PrefixQuery(term.createTerm(term.text() @@ -78,6 +78,7 @@ public class WildcardQuery extends MultiTermQuery { } /** Prints a user-readable version of this query. */ + @Override public String toString(String field) { StringBuilder buffer = new StringBuilder(); if (!term.field().equals(field)) { @@ -89,7 +90,7 @@ public class WildcardQuery extends MultiTermQuery { return buffer.toString(); } - //@Override + @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); @@ -97,7 +98,7 @@ public class WildcardQuery extends MultiTermQuery { return result; } - //@Override + @Override public boolean equals(Object obj) { if (this == obj) return true; diff --git a/src/test/org/apache/lucene/search/JustCompileSearch.java b/src/test/org/apache/lucene/search/JustCompileSearch.java index d76d41bf7b1..0ced555bbf8 100644 --- a/src/test/org/apache/lucene/search/JustCompileSearch.java +++ b/src/test/org/apache/lucene/search/JustCompileSearch.java @@ -276,14 +276,6 @@ final class JustCompileSearch { } - static final class JustCompileMultiTermQuery extends MultiTermQuery { - - protected FilteredTermEnum getEnum(IndexReader reader) throws IOException { - throw new UnsupportedOperationException(UNSUPPORTED_MSG); - } - - } - static final class JustCompilePhraseScorer extends PhraseScorer { JustCompilePhraseScorer(Weight weight, TermPositions[] tps, int[] offsets,