You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2014/12/05 16:24:13 UTC
svn commit: r1643326 [4/4] - in /lucene/dev/branches/lucene2878: ./ lucene/
lucene/codecs/ lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/
lucene/core/ lucene/core/src/java/org/apache/lucene/codecs/compressing/
lucene/core/src/java/org/apac...
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java Fri Dec 5 15:24:11 2014
@@ -126,6 +126,59 @@ public class SimpleFacetsTest extends So
add_doc("id", "2004", "hotel_s1", "b", "airport_s1", "ams", "duration_i1", "5");
}
+
+ public void testDefaultsAndAppends() throws Exception {
+ // all defaults
+ assertQ( req("indent","true", "q","*:*", "rows","0", "facet","true", "qt","/search-facet-def")
+ // only one default facet.field
+ ,"//lst[@name='facet_fields']/lst[@name='foo_s']"
+ ,"count(//lst[@name='facet_fields']/lst[@name='foo_s'])=1"
+ ,"count(//lst[@name='facet_fields']/lst)=1"
+ // only one default facet.query
+ ,"//lst[@name='facet_queries']/int[@name='foo_s:bar']"
+ ,"count(//lst[@name='facet_queries']/int[@name='foo_s:bar'])=1"
+ ,"count(//lst[@name='facet_queries']/int)=1"
+ );
+
+ // override default & pre-pend to appends
+ assertQ( req("indent","true", "q","*:*", "rows","0", "facet","true", "qt","/search-facet-def",
+ "facet.field", "bar_s",
+ "facet.query", "bar_s:yak"
+ )
+ // override single default facet.field
+ ,"//lst[@name='facet_fields']/lst[@name='bar_s']"
+ ,"count(//lst[@name='facet_fields']/lst[@name='bar_s'])=1"
+ ,"count(//lst[@name='facet_fields']/lst)=1"
+ // add an additional facet.query
+ ,"//lst[@name='facet_queries']/int[@name='foo_s:bar']"
+ ,"//lst[@name='facet_queries']/int[@name='bar_s:yak']"
+ ,"count(//lst[@name='facet_queries']/int[@name='foo_s:bar'])=1"
+ ,"count(//lst[@name='facet_queries']/int[@name='bar_s:yak'])=1"
+ ,"count(//lst[@name='facet_queries']/int)=2"
+ );
+ }
+
+ public void testInvariants() throws Exception {
+ // no matter if we try to use facet.field or facet.query, results shouldn't change
+ for (String ff : new String[] { "facet.field", "bogus" }) {
+ for (String fq : new String[] { "facet.query", "bogus" }) {
+ assertQ( req("indent","true", "q", "*:*", "rows","0", "facet","true",
+ "qt","/search-facet-invariants",
+ ff, "bar_s",
+ fq, "bar_s:yak")
+ // only one invariant facet.field
+ ,"//lst[@name='facet_fields']/lst[@name='foo_s']"
+ ,"count(//lst[@name='facet_fields']/lst[@name='foo_s'])=1"
+ ,"count(//lst[@name='facet_fields']/lst)=1"
+ // only one invariant facet.query
+ ,"//lst[@name='facet_queries']/int[@name='foo_s:bar']"
+ ,"count(//lst[@name='facet_queries']/int[@name='foo_s:bar'])=1"
+ ,"count(//lst[@name='facet_queries']/int)=1"
+ );
+ }
+ }
+ }
+
@Test
public void testCachingBigTerms() throws Exception {
assertQ( req("indent","true", "q", "id:[42 TO 47]",
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java Fri Dec 5 15:24:11 2014
@@ -23,12 +23,17 @@ import org.apache.solr.common.SolrDocume
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
public class CloudMLTQParserTest extends AbstractFullDistribZkTestBase {
+
+ static Logger log = LoggerFactory.getLogger(CloudMLTQParserTest.class);
+
public CloudMLTQParserTest() {
fixShardCount = true;
shardCount = 2;
@@ -125,13 +130,20 @@ public class CloudMLTQParserTest extends
String expectedQueryString = "lowerfilt:over lowerfilt:fox lowerfilt:lazy lowerfilt:brown "
+ "lowerfilt:jumped lowerfilt:red lowerfilt:dogs. lowerfilt:quote lowerfilt:the";
- ArrayList<String> actualParsedQueries = (ArrayList<String>) queryResponse
- .getDebugMap().get("parsedquery");
-
- for(int counter=0; counter < actualParsedQueries.size(); counter++) {
- assertTrue("Parsed queries aren't equal",
- compareParsedQueryStrings(expectedQueryString,
- actualParsedQueries.get(counter)));
+ try {
+ ArrayList<String> actualParsedQueries = (ArrayList<String>) queryResponse
+ .getDebugMap().get("parsedquery");
+
+ for (int counter = 0; counter < actualParsedQueries.size(); counter++) {
+ assertTrue("Parsed queries aren't equal",
+ compareParsedQueryStrings(expectedQueryString,
+ actualParsedQueries.get(counter)));
+ }
+ } catch (ClassCastException ex) {
+ // TODO: Adding this to just track a rare test failure.
+ // Once SOLR-6755 is resolved, this should be removed.
+ log.info("QueryResponse.debugMap: {}", queryResponse.getDebugMap().toString());
+ log.info("ClusterState: {}", cloudClient.getZkStateReader().getClusterState().toString());
}
// Assert that {!mlt}id does not throw an exception i.e. implicitly, only fields that are stored + have explicit
Modified: lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java (original)
+++ lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java Fri Dec 5 15:24:11 2014
@@ -18,8 +18,7 @@
package org.apache.solr.common.params;
import java.util.Iterator;
-
-import org.apache.solr.common.util.IteratorChain;
+import java.util.LinkedHashSet;
/**
*
@@ -52,10 +51,17 @@ public class DefaultSolrParams extends S
@Override
public Iterator<String> getParameterNamesIterator() {
- final IteratorChain<String> c = new IteratorChain<>();
- c.addIterator(defaults.getParameterNamesIterator());
- c.addIterator(params.getParameterNamesIterator());
- return c;
+ // We need to compute the set of all param names in advance
+ // So we don't wind up with an iterator that returns the same
+ // String more then once (SOLR-6780)
+ LinkedHashSet<String> allKeys = new LinkedHashSet<>();
+ for (SolrParams p : new SolrParams [] {params, defaults}) {
+ Iterator<String> localKeys = p.getParameterNamesIterator();
+ while (localKeys.hasNext()) {
+ allKeys.add(localKeys.next());
+ }
+ }
+ return allKeys.iterator();
}
@Override
Modified: lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/util/IteratorChain.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/util/IteratorChain.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/util/IteratorChain.java (original)
+++ lucene/dev/branches/lucene2878/solr/solrj/src/java/org/apache/solr/common/util/IteratorChain.java Fri Dec 5 15:24:11 2014
@@ -23,8 +23,10 @@ import java.util.List;
/** Chain several Iterators, so that this iterates
* over all of them in sequence.
+ *
+ * @deprecated This class is no longer used by Solr, and may be removed in future versions
*/
-
+@Deprecated
public class IteratorChain<E> implements Iterator<E> {
private final List<Iterator<E>> iterators = new ArrayList<>();
Modified: lucene/dev/branches/lucene2878/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java Fri Dec 5 15:24:11 2014
@@ -19,14 +19,93 @@ package org.apache.solr.common.params;
import java.util.HashMap;
import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.common.SolrException;
/**
*/
-public class SolrParamTest extends LuceneTestCase
-{
+public class SolrParamTest extends LuceneTestCase {
+
+ public void testParamIterators() {
+
+ ModifiableSolrParams aaa = new ModifiableSolrParams();
+ aaa.add("foo", "a1");
+ aaa.add("foo", "a2");
+
+ assertIterSize("aaa: foo", 1, aaa);
+ assertIterSize("required aaa: foo", 1, aaa.required());
+
+ assertEquals(new String[] { "a1", "a2" }, aaa.getParams("foo"));
+
+ aaa.add("yak", "a3");
+
+ assertIterSize("aaa: foo & yak", 2, aaa);
+ assertIterSize("required aaa: foo & yak", 2, aaa.required());
+
+ assertEquals(new String[] { "a1", "a2" }, aaa.getParams("foo"));
+ assertEquals(new String[] { "a3" }, aaa.getParams("yak"));
+
+ ModifiableSolrParams bbb = new ModifiableSolrParams();
+ bbb.add("foo", "b1");
+ bbb.add("foo", "b2");
+ bbb.add("zot", "b3");
+
+ assertIterSize("bbb: foo & zot", 2, bbb);
+ assertIterSize("required bbb: foo & zot", 2, bbb.required());
+
+ assertEquals(new String[] { "b1", "b2" }, bbb.getParams("foo"));
+ assertEquals(new String[] { "b3" }, bbb.getParams("zot"));
+
+ SolrParams def = SolrParams.wrapDefaults(aaa, bbb);
+
+ assertIterSize("def: aaa + bbb", 3, def);
+ assertIterSize("required def: aaa + bbb", 3, def.required());
+
+ assertEquals(new String[] { "a1", "a2" }, def.getParams("foo"));
+ assertEquals(new String[] { "a3" }, def.getParams("yak"));
+ assertEquals(new String[] { "b3" }, def.getParams("zot"));
+
+ SolrParams append = SolrParams.wrapAppended(aaa, bbb);
+
+ assertIterSize("append: aaa + bbb", 3, append);
+ assertIterSize("required appended: aaa + bbb", 3, append.required());
+
+ assertEquals(new String[] { "a1", "a2", "b1", "b2", }, append.getParams("foo"));
+ assertEquals(new String[] { "a3" }, append.getParams("yak"));
+ assertEquals(new String[] { "b3" }, append.getParams("zot"));
+
+ }
+
+ public void testModParamAddParams() {
+
+ ModifiableSolrParams aaa = new ModifiableSolrParams();
+ aaa.add("foo", "a1");
+ aaa.add("foo", "a2");
+ aaa.add("yak", "a3");
+
+ ModifiableSolrParams bbb = new ModifiableSolrParams();
+ bbb.add("foo", "b1");
+ bbb.add("foo", "b2");
+ bbb.add("zot", "b3");
+
+ SolrParams def = SolrParams.wrapDefaults(aaa, bbb);
+ assertEquals(new String[] { "a1", "a2" }, def.getParams("foo"));
+ assertEquals(new String[] { "a3" }, def.getParams("yak"));
+ assertEquals(new String[] { "b3" }, def.getParams("zot"));
+
+ ModifiableSolrParams combined = new ModifiableSolrParams();
+ combined.add(def);
+
+ assertEquals(new String[] { "a1", "a2" }, combined.getParams("foo"));
+ assertEquals(new String[] { "a3" }, combined.getParams("yak"));
+ assertEquals(new String[] { "b3" }, combined.getParams("zot"));
+
+ }
+
public void testGetParams() {
Map<String,String> pmap = new HashMap<>();
pmap.put( "str" , "string" );
@@ -194,4 +273,18 @@ public class SolrParamTest extends Lucen
}
return 200;
}
+
+ static <T> List<T> iterToList(Iterator<T> iter) {
+ List<T> result = new ArrayList<>();
+ while (iter.hasNext()) {
+ result.add(iter.next());
+ }
+ return result;
+ }
+
+ static void assertIterSize(String msg, int expectedSize, SolrParams p) {
+ List<String> keys = iterToList(p.getParameterNamesIterator());
+ assertEquals(msg + " " + keys.toString(), expectedSize, keys.size());
+ }
+
}
Modified: lucene/dev/branches/lucene2878/solr/webapp/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/webapp/build.xml?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/webapp/build.xml (original)
+++ lucene/dev/branches/lucene2878/solr/webapp/build.xml Fri Dec 5 15:24:11 2014
@@ -46,7 +46,7 @@
<build-manifest title="Apache Solr Search Server"
implementation.title="org.apache.solr"/>
<ant dir="${common-solr.dir}" inheritall="false" target="contribs-add-to-war"/>
- <war destfile="${dist}/solr-${version}${solr.war.suffix}.war"
+ <war destfile="${server.dir}/webapps/solr.war"
webxml="web/WEB-INF/web.xml"
manifest="${manifest.file}">
<lib dir="${common-solr.dir}/core/lib" excludes="${exclude.from.war},${common.classpath.excludes}"/>