protected void checkQueries()

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);
    }
  }