in solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java [1169:1419]
protected void checkQueries() throws Exception {
handle.put("_version_", SKIPVAL);
query("q", "*:*", "sort", "n_tl1 desc");
handle.put("response", UNORDERED); // get?ids=a,b,c requests are unordered
String ids = "987654";
for (int i = 0; i < 20; i++) {
query("qt", "/get", "id", Integer.toString(i));
query("qt", "/get", "ids", Integer.toString(i));
ids = ids + ',' + Integer.toString(i);
query("qt", "/get", "ids", ids);
}
handle.remove("response");
// random value sort
for (String f : fieldNames) {
query("q", "*:*", "sort", f + " desc");
query("q", "*:*", "sort", f + " asc");
}
// these queries should be exactly ordered and scores should exactly match
query("q", "*:*", "sort", i1 + " desc");
query("q", "*:*", "sort", i1 + " asc");
query("q", "*:*", "sort", i1 + " desc", "fl", "*,score");
query("q", "*:*", "sort", "n_tl1 asc", "fl", "score"); // test legacy
// behavior -
// "score"=="*,score"
query("q", "*:*", "sort", "n_tl1 desc");
handle.put("maxScore", SKIPVAL);
query("q", "{!func}" + i1); // does not expect maxScore. So if it comes
// ,ignore it.
// JavaBinCodec.writeSolrDocumentList()
// is agnostic of request params.
handle.remove("maxScore");
query("q", "{!func}" + i1, "fl", "*,score"); // even scores should match
// exactly here
handle.put("highlighting", UNORDERED);
handle.put("response", UNORDERED);
handle.put("maxScore", SKIPVAL);
query("q", "quick");
query("q", "all", "fl", "id", "start", "0");
query("q", "all", "fl", "foofoofoo", "start", "0"); // no fields in returned
// docs
query("q", "all", "fl", "id", "start", "100");
handle.put("score", SKIPVAL);
query("q", "quick", "fl", "*,score");
query("q", "all", "fl", "*,score", "start", "1");
query("q", "all", "fl", "*,score", "start", "100");
query("q", "now their fox sat had put", "fl", "*,score", "hl", "true", "hl.fl", t1);
query("q", "now their fox sat had put", "fl", "foofoofoo", "hl", "true", "hl.fl", t1);
query("q", "matchesnothing", "fl", "*,score");
query("q", "*:*", "rows", 100, "facet", "true", "facet.field", t1);
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.field",
t1,
"facet.limit",
-1,
"facet.sort",
"count");
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.field",
t1,
"facet.limit",
-1,
"facet.sort",
"count",
"facet.mincount",
2);
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.field",
t1,
"facet.limit",
-1,
"facet.sort",
"index");
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.field",
t1,
"facet.limit",
-1,
"facet.sort",
"index",
"facet.mincount",
2);
query("q", "*:*", "rows", 100, "facet", "true", "facet.field", t1, "facet.limit", 1);
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.query",
"quick",
"facet.query",
"all",
"facet.query",
"*:*");
query("q", "*:*", "rows", 100, "facet", "true", "facet.field", t1, "facet.offset", 1);
query("q", "*:*", "rows", 100, "facet", "true", "facet.field", t1, "facet.mincount", 2);
// test faceting multiple things at once
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.query",
"quick",
"facet.query",
"all",
"facet.query",
"*:*",
"facet.field",
t1);
// test filter tagging, facet exclusion, and naming (multi-select facet
// support)
query(
"q",
"*:*",
"rows",
100,
"facet",
"true",
"facet.query",
"{!key=myquick}quick",
"facet.query",
"{!key=myall ex=a}all",
"facet.query",
"*:*",
"facet.field",
"{!key=mykey ex=a}" + t1,
"facet.field",
"{!key=other ex=b}" + t1,
"facet.field",
"{!key=again ex=a,b}" + t1,
"facet.field",
t1,
"fq",
"{!tag=a}id:[1 TO 7]",
"fq",
"{!tag=b}id:[3 TO 9]");
query(
"q",
"*:*",
"facet",
"true",
"facet.field",
"{!ex=t1}SubjectTerms_mfacet",
"fq",
"{!tag=t1}SubjectTerms_mfacet:(test 1)",
"facet.limit",
"10",
"facet.mincount",
"1");
// test field that is valid in schema but missing in all shards
query(
"q", "*:*", "rows", 100, "facet", "true", "facet.field", missingField, "facet.mincount", 2);
// test field that is valid in schema and missing in some shards
query("q", "*:*", "rows", 100, "facet", "true", "facet.field", oddField, "facet.mincount", 2);
query("q", "*:*", "sort", i1 + " desc", "stats", "true", "stats.field", i1);
// Try to get better coverage for refinement queries by turning off over
// requesting.
// This makes it much more likely that we may not get the top facet values
// and hence
// we turn of that checking.
handle.put("facet_fields", SKIPVAL);
query(
"q",
"*:*",
"rows",
0,
"facet",
"true",
"facet.field",
t1,
"facet.limit",
5,
"facet.shard.limit",
5);
// check a complex key name
query(
"q",
"*:*",
"rows",
0,
"facet",
"true",
"facet.field",
"{!key='a b/c \\' \\} foo'}" + t1,
"facet.limit",
5,
"facet.shard.limit",
5);
handle.remove("facet_fields");
query("q", "*:*", "sort", "n_tl1 desc");
// index the same document to two shards and make sure things
// don't blow up.
// assumes first n clients are first n shards
if (clients.size() >= 2) {
index(id, 100, i1, 107, t1, "oh no, a duplicate!");
for (int i = 0; i < getShardCount(); i++) {
index_specific(i, id, 100, i1, 107, t1, "oh no, a duplicate!");
}
commit();
query("q", "duplicate", "hl", "true", "hl.fl", t1);
query("q", "fox duplicate horses", "hl", "true", "hl.fl", t1);
query("q", "*:*", "rows", 100);
}
}