You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/07/28 12:01:18 UTC
svn commit: r1693059 [3/3] - in /lucene/dev/branches/branch_5x: ./ lucene/
lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/
lucene/benchmark/
lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/
lucene/core/ lucene/cor...
Modified: lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java (original)
+++ lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java Tue Jul 28 10:01:17 2015
@@ -410,16 +410,14 @@ public class TestMemoryIndexAgainstRAMDi
LeafReader reader = (LeafReader) mindex.createSearcher().getIndexReader();
TestUtil.checkReader(reader);
assertEquals(7, reader.terms("field").getSumTotalTermFreq());
- PhraseQuery query = new PhraseQuery();
- query.add(new Term("field", "fox"));
- query.add(new Term("field", "jumps"));
+ PhraseQuery query = new PhraseQuery("field", "fox", "jumps");
assertTrue(mindex.search(query) > 0.1);
mindex.reset();
mockAnalyzer.setPositionIncrementGap(1 + random().nextInt(10));
mindex.addField("field", "the quick brown fox", mockAnalyzer);
mindex.addField("field", "jumps over the", mockAnalyzer);
assertEquals(0, mindex.search(query), 0.00001f);
- query.setSlop(10);
+ query = new PhraseQuery(10, "field", "fox", "jumps");
assertTrue("posGap" + mockAnalyzer.getPositionIncrementGap("field") , mindex.search(query) > 0.0001);
TestUtil.checkReader(mindex.createSearcher().getIndexReader());
}
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java Tue Jul 28 10:01:17 2015
@@ -109,7 +109,7 @@ public class MultiFieldQueryParser exten
q.setBoost(boost.floatValue());
}
}
- applySlop(q,slop);
+ q = applySlop(q,slop);
clauses.add(new BooleanClause(q, BooleanClause.Occur.SHOULD));
}
}
@@ -118,16 +118,26 @@ public class MultiFieldQueryParser exten
return getBooleanQuery(clauses, true);
}
Query q = super.getFieldQuery(field, queryText, true);
- applySlop(q,slop);
+ q = applySlop(q,slop);
return q;
}
- private void applySlop(Query q, int slop) {
+ private Query applySlop(Query q, int slop) {
if (q instanceof PhraseQuery) {
- ((PhraseQuery) q).setSlop(slop);
+ PhraseQuery.Builder builder = new PhraseQuery.Builder();
+ builder.setSlop(slop);
+ PhraseQuery pq = (PhraseQuery) q;
+ org.apache.lucene.index.Term[] terms = pq.getTerms();
+ int[] positions = pq.getPositions();
+ for (int i = 0; i < terms.length; ++i) {
+ builder.add(terms[i], positions[i]);
+ }
+ q = builder.build();
+ q.setBoost(pq.getBoost());
} else if (q instanceof MultiPhraseQuery) {
((MultiPhraseQuery) q).setSlop(slop);
}
+ return q;
}
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java Tue Jul 28 10:01:17 2015
@@ -493,7 +493,16 @@ public abstract class QueryParserBase ex
Query query = getFieldQuery(field, queryText, true);
if (query instanceof PhraseQuery) {
- ((PhraseQuery) query).setSlop(slop);
+ PhraseQuery.Builder builder = new PhraseQuery.Builder();
+ builder.setSlop(slop);
+ PhraseQuery pq = (PhraseQuery) query;
+ org.apache.lucene.index.Term[] terms = pq.getTerms();
+ int[] positions = pq.getPositions();
+ for (int i = 0; i < terms.length; ++i) {
+ builder.add(terms[i], positions[i]);
+ }
+ query = builder.build();
+ query.setBoost(pq.getBoost());
}
if (query instanceof MultiPhraseQuery) {
((MultiPhraseQuery) query).setSlop(slop);
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/PhraseQueryNodeBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/PhraseQueryNodeBuilder.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/PhraseQueryNodeBuilder.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/PhraseQueryNodeBuilder.java Tue Jul 28 10:01:17 2015
@@ -25,6 +25,7 @@ import org.apache.lucene.queryparser.fle
import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode;
import org.apache.lucene.queryparser.flexible.core.nodes.TokenizedPhraseQueryNode;
import org.apache.lucene.search.PhraseQuery;
+import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
/**
@@ -38,10 +39,10 @@ public class PhraseQueryNodeBuilder impl
}
@Override
- public PhraseQuery build(QueryNode queryNode) throws QueryNodeException {
+ public Query build(QueryNode queryNode) throws QueryNodeException {
TokenizedPhraseQueryNode phraseNode = (TokenizedPhraseQueryNode) queryNode;
- PhraseQuery phraseQuery = new PhraseQuery();
+ PhraseQuery.Builder builder = new PhraseQuery.Builder();
List<QueryNode> children = phraseNode.getChildren();
@@ -52,13 +53,12 @@ public class PhraseQueryNodeBuilder impl
.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
FieldQueryNode termNode = (FieldQueryNode) child;
- phraseQuery.add(termQuery.getTerm(), termNode.getPositionIncrement());
-
+ builder.add(termQuery.getTerm(), termNode.getPositionIncrement());
}
}
- return phraseQuery;
+ return builder.build();
}
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/SlopQueryNodeBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/SlopQueryNodeBuilder.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/SlopQueryNodeBuilder.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/SlopQueryNodeBuilder.java Tue Jul 28 10:01:17 2015
@@ -45,7 +45,16 @@ public class SlopQueryNodeBuilder implem
QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
if (query instanceof PhraseQuery) {
- ((PhraseQuery) query).setSlop(phraseSlopNode.getValue());
+ PhraseQuery.Builder builder = new PhraseQuery.Builder();
+ builder.setSlop(phraseSlopNode.getValue());
+ PhraseQuery pq = (PhraseQuery) query;
+ org.apache.lucene.index.Term[] terms = pq.getTerms();
+ int[] positions = pq.getPositions();
+ for (int i = 0; i < terms.length; ++i) {
+ builder.add(terms[i], positions[i]);
+ }
+ query = builder.build();
+ query.setBoost(pq.getBoost());
} else {
((MultiPhraseQuery) query).setSlop(phraseSlopNode.getValue());
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java Tue Jul 28 10:01:17 2015
@@ -28,7 +28,13 @@ import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
-import org.apache.lucene.analysis.*;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.analysis.MockTokenFilter;
+import org.apache.lucene.analysis.MockTokenizer;
+import org.apache.lucene.analysis.TokenFilter;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
@@ -48,8 +54,8 @@ import org.apache.lucene.queryparser.fle
import org.apache.lucene.queryparser.flexible.messages.MessageImpl;
import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler;
import org.apache.lucene.queryparser.flexible.standard.nodes.WildcardQueryNode;
-import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.IndexSearcher;
@@ -401,9 +407,7 @@ public class TestQPHelper extends Lucene
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
+ PhraseQuery expected = new PhraseQuery("field", "ä¸", "å½");
assertEquals(expected, getQuery("\"ä¸å½\"", analyzer));
}
@@ -412,10 +416,8 @@ public class TestQPHelper extends Lucene
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
+ PhraseQuery expected = new PhraseQuery("field", "ä¸", "å½");
expected.setBoost(0.5f);
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
assertEquals(expected, getQuery("\"ä¸å½\"^0.5", analyzer));
}
@@ -424,10 +426,7 @@ public class TestQPHelper extends Lucene
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
- expected.setSlop(3);
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
+ PhraseQuery expected = new PhraseQuery(3, "field", "ä¸", "å½");
assertEquals(expected, getQuery("\"ä¸å½\"~3", analyzer));
}
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java Tue Jul 28 10:01:17 2015
@@ -103,42 +103,29 @@ public class TestSimpleQueryParser exten
/** test a simple phrase */
public void testPhrase() throws Exception {
- PhraseQuery expected = new PhraseQuery();
- expected.add(new Term("field", "foo"));
- expected.add(new Term("field", "bar"));
+ PhraseQuery expected = new PhraseQuery("field", "foo", "bar");
assertEquals(expected, parse("\"foo bar\""));
}
/** test a simple phrase with various slop settings */
public void testPhraseWithSlop() throws Exception {
- PhraseQuery expectedWithSlop = new PhraseQuery();
- expectedWithSlop.add(new Term("field", "foo"));
- expectedWithSlop.add(new Term("field", "bar"));
- expectedWithSlop.setSlop(2);
+ PhraseQuery expectedWithSlop = new PhraseQuery(2, "field", "foo", "bar");
assertEquals(expectedWithSlop, parse("\"foo bar\"~2"));
- PhraseQuery expectedWithMultiDigitSlop = new PhraseQuery();
- expectedWithMultiDigitSlop.add(new Term("field", "foo"));
- expectedWithMultiDigitSlop.add(new Term("field", "bar"));
- expectedWithMultiDigitSlop.setSlop(10);
+ PhraseQuery expectedWithMultiDigitSlop = new PhraseQuery(10, "field", "foo", "bar");
assertEquals(expectedWithMultiDigitSlop, parse("\"foo bar\"~10"));
- PhraseQuery expectedNoSlop = new PhraseQuery();
- expectedNoSlop.add(new Term("field", "foo"));
- expectedNoSlop.add(new Term("field", "bar"));
+ PhraseQuery expectedNoSlop = new PhraseQuery("field", "foo", "bar");
assertEquals("Ignore trailing tilde with no slop", expectedNoSlop, parse("\"foo bar\"~"));
assertEquals("Ignore non-numeric trailing slop", expectedNoSlop, parse("\"foo bar\"~a"));
assertEquals("Ignore non-numeric trailing slop", expectedNoSlop, parse("\"foo bar\"~1a"));
assertEquals("Ignore negative trailing slop", expectedNoSlop, parse("\"foo bar\"~-1"));
- PhraseQuery pq = new PhraseQuery();
- pq.add(new Term("field", "foo"));
- pq.add(new Term("field", "bar"));
- pq.setSlop(12);
+ PhraseQuery pq = new PhraseQuery(12, "field", "foo", "bar");
BooleanQuery expectedBoolean = new BooleanQuery();
expectedBoolean.add(pq, Occur.MUST);
@@ -165,12 +152,8 @@ public class TestSimpleQueryParser exten
/** test some AND'd phrases using '+' operator */
public void testANDPhrase() throws Exception {
- PhraseQuery phrase1 = new PhraseQuery();
- phrase1.add(new Term("field", "foo"));
- phrase1.add(new Term("field", "bar"));
- PhraseQuery phrase2 = new PhraseQuery();
- phrase2.add(new Term("field", "star"));
- phrase2.add(new Term("field", "wars"));
+ PhraseQuery phrase1 = new PhraseQuery("field", "foo", "bar");
+ PhraseQuery phrase2 = new PhraseQuery("field", "star", "wars");
BooleanQuery expected = new BooleanQuery();
expected.add(phrase1, Occur.MUST);
expected.add(phrase2, Occur.MUST);
@@ -209,12 +192,8 @@ public class TestSimpleQueryParser exten
/** test some OR'd phrases using '|' operator */
public void testORPhrase() throws Exception {
- PhraseQuery phrase1 = new PhraseQuery();
- phrase1.add(new Term("field", "foo"));
- phrase1.add(new Term("field", "bar"));
- PhraseQuery phrase2 = new PhraseQuery();
- phrase2.add(new Term("field", "star"));
- phrase2.add(new Term("field", "wars"));
+ PhraseQuery phrase1 = new PhraseQuery("field", "foo", "bar");
+ PhraseQuery phrase2 = new PhraseQuery("field", "star", "wars");
BooleanQuery expected = new BooleanQuery();
expected.add(phrase1, Occur.SHOULD);
expected.add(phrase2, Occur.SHOULD);
@@ -324,9 +303,7 @@ public class TestSimpleQueryParser exten
}
public void testGarbagePhrase() throws Exception {
- PhraseQuery expected = new PhraseQuery();
- expected.add(new Term("field", "star"));
- expected.add(new Term("field", "wars"));
+ PhraseQuery expected = new PhraseQuery("field", "star", "wars");
assertEquals(expected, parse("\"star wars\""));
assertEquals(expected, parse("\"star wars\\ \""));
@@ -614,9 +591,7 @@ public class TestSimpleQueryParser exten
}
public void testDisableSlop() {
- PhraseQuery expectedPhrase = new PhraseQuery();
- expectedPhrase.add(new Term("field", "foo"));
- expectedPhrase.add(new Term("field", "bar"));
+ PhraseQuery expectedPhrase = new PhraseQuery("field", "foo", "bar");
BooleanQuery expected = new BooleanQuery();
expected.add(expectedPhrase, Occur.MUST);
Modified: lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java Tue Jul 28 10:01:17 2015
@@ -298,9 +298,7 @@ public abstract class QueryParserTestBas
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
+ PhraseQuery expected = new PhraseQuery("field", "ä¸", "å½");
assertEquals(expected, getQuery("\"ä¸å½\"", analyzer));
}
@@ -309,10 +307,8 @@ public abstract class QueryParserTestBas
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
+ PhraseQuery expected = new PhraseQuery("field", "ä¸", "å½");
expected.setBoost(0.5f);
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
assertEquals(expected, getQuery("\"ä¸å½\"^0.5", analyzer));
}
@@ -321,10 +317,7 @@ public abstract class QueryParserTestBas
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
- expected.setSlop(3);
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
+ PhraseQuery expected = new PhraseQuery(3, "field", "ä¸", "å½");
assertEquals(expected, getQuery("\"ä¸å½\"~3", analyzer));
}
@@ -333,9 +326,7 @@ public abstract class QueryParserTestBas
// individual CJK chars as terms
SimpleCJKAnalyzer analyzer = new SimpleCJKAnalyzer();
- PhraseQuery expected = new PhraseQuery();
- expected.add(new Term("field", "ä¸"));
- expected.add(new Term("field", "å½"));
+ PhraseQuery expected = new PhraseQuery("field", "ä¸", "å½");
CommonQueryParserConfiguration qp = getParserConfig(analyzer);
setAutoGeneratePhraseQueries(qp, true);
assertEquals(expected, getQuery("ä¸å½",qp));
@@ -1259,10 +1250,10 @@ public abstract class QueryParserTestBas
new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false, stopStopList));
qp.setEnablePositionIncrements(true);
- PhraseQuery phraseQuery = new PhraseQuery();
+ PhraseQuery.Builder phraseQuery = new PhraseQuery.Builder();
phraseQuery.add(new Term("field", "1"));
phraseQuery.add(new Term("field", "2"), 2);
- assertEquals(phraseQuery, getQuery("\"1 stop 2\"",qp));
+ assertEquals(phraseQuery.build(), getQuery("\"1 stop 2\"",qp));
}
public void testMatchAllQueryParsing() throws Exception {
Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java Tue Jul 28 10:01:17 2015
@@ -673,9 +673,7 @@ public abstract class ThreadedIndexingAn
protected void smokeTestSearcher(IndexSearcher s) throws Exception {
runQuery(s, new TermQuery(new Term("body", "united")));
runQuery(s, new TermQuery(new Term("titleTokenized", "states")));
- PhraseQuery pq = new PhraseQuery();
- pq.add(new Term("body", "united"));
- pq.add(new Term("body", "states"));
+ PhraseQuery pq = new PhraseQuery("body", "united", "states");
runQuery(s, pq);
}
}
Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java Tue Jul 28 10:01:17 2015
@@ -147,10 +147,7 @@ public abstract class SearchEquivalenceT
query = TermRangeQuery.newStringRange("field", "a", "" + randomChar(), true, true);
} else {
// use a query with a two-phase approximation
- PhraseQuery phrase = new PhraseQuery();
- phrase.add(new Term("field", "" + randomChar()));
- phrase.add(new Term("field", "" + randomChar()));
- phrase.setSlop(100);
+ PhraseQuery phrase = new PhraseQuery(100, "field", "" + randomChar(), "" + randomChar());
query = phrase;
}
return query;
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java Tue Jul 28 10:01:17 2015
@@ -387,7 +387,16 @@ public abstract class SolrQueryParserBas
if (subQParser == null) {
if (query instanceof PhraseQuery) {
- ((PhraseQuery) query).setSlop(slop);
+ PhraseQuery pq = (PhraseQuery) query;
+ Term[] terms = pq.getTerms();
+ int[] positions = pq.getPositions();
+ PhraseQuery.Builder builder = new PhraseQuery.Builder();
+ for (int i = 0; i < terms.length; ++i) {
+ builder.add(terms[i], positions[i]);
+ }
+ builder.setSlop(slop);
+ query = builder.build();
+ query.setBoost(pq.getBoost());
}
if (query instanceof MultiPhraseQuery) {
((MultiPhraseQuery) query).setSlop(slop);
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java?rev=1693059&r1=1693058&r2=1693059&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java Tue Jul 28 10:01:17 2015
@@ -17,12 +17,22 @@
package org.apache.solr.search;
-import com.google.common.base.Function;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.core.StopFilterFactory;
import org.apache.lucene.analysis.util.TokenFilterFactory;
+import org.apache.lucene.index.Term;
import org.apache.lucene.queries.function.BoostedQuery;
import org.apache.lucene.queries.function.FunctionQuery;
import org.apache.lucene.queries.function.ValueSource;
@@ -45,17 +55,9 @@ import org.apache.solr.request.SolrQuery
import org.apache.solr.schema.FieldType;
import org.apache.solr.util.SolrPluginUtils;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.google.common.base.Function;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
/**
* Query parser that generates DisjunctionMaxQueries based on user configuration.
@@ -1240,7 +1242,14 @@ public class ExtendedDismaxQParser exten
if (query instanceof PhraseQuery) {
PhraseQuery pq = (PhraseQuery)query;
if (minClauseSize > 1 && pq.getTerms().length < minClauseSize) return null;
- ((PhraseQuery)query).setSlop(slop);
+ PhraseQuery.Builder builder = new PhraseQuery.Builder();
+ Term[] terms = pq.getTerms();
+ int[] positions = pq.getPositions();
+ for (int i = 0; i < terms.length; ++i) {
+ builder.add(terms[i], positions[i]);
+ }
+ builder.setSlop(slop);
+ query = builder.build();
} else if (query instanceof MultiPhraseQuery) {
MultiPhraseQuery pq = (MultiPhraseQuery)query;
if (minClauseSize > 1 && pq.getTermArrays().size() < minClauseSize) return null;