Hi folks, I am trying to track down what might have changed and where i could tweak a configuration that worked under Solr 6.5.1 but which is not working as expected under 7.3.1 or 7.4.0. We have default "qf" and "pf" defeined for our select handler, along with "special" versions of those for use in particular kinds of queries; our application (based on Project Blacklight) make extensive use of local parameter expansion.
Default query parser is edismax, and we are sending in queries like: "q={! qf=$special_qf pf=$special_pf}query terms' what used to happen, and what we expect given the documentation at https://lucene.apache.org/solr/guide/6_6/local-parameters-in-queries.html (6.6) and https://lucene.apache.org/solr/guide/7_3/local-parameters-in-queries.html (7.3) is that this should set qf and pf to their 'special' variants, where the values are pulled from solrconfig.xml/confogoverlay.json (as appropriate for the version). We can achieve the indended effect via: q=query terms&pf=${special_pf}&qf=${special_qf} (and we have tested this and it seems to yield the expected behavior) but this seems like it would be more involved than figuring out *why* the old syntax isn't working and what we could change in our configset to make it work again. Our select handler configuration doesn't look particularly weird: The actual values of qf/pf and special_qf/pf are really big, but I created a 'smaller' configuration for the select handler: "requestHandler": { "/select": { "name": "/select", "class": "solr.SearchHandler", "defaults": { "defType": "edismax", "echoParams": "explicit", "rows": 10, "q.alt": "*:*", "mm": "6<90%", "facet.mincount": "1", "qf": "original_qf_notexpanded^1.5", "pf": "original_pf_notexpanded^1.5", "sample_qf": "sample_qf_expanded^2", "sample_pf": "sample_pf_expanded^2" } }, What we are seeing when we turn debugging on and look at the parsed query is something like: "parsedquery":"+(DisjunctionMaxQuery(((original_qf_notexpanded:[[7b 21] TO [7b 21]])^1.5)) DisjunctionMaxQuery(((original_qf_notexpanded:[[71 66 3d 24 73 61 6d 70 6c 65 5f 71 66] TO [71 66 3d 24 73 61 6d 70 6c 65 5f 71 66]])^1.5)) DisjunctionMaxQuery(((original_qf_notexpanded:[[70 66 3d 24 73 61 6d 70 6c 65 5f 70 66 7d 71 75 65 72 79] TO [70 66 3d 24 73 61 6d 70 6c 65 5f 70 66 7d 71 75 65 72 79]])^1.5)) DisjunctionMaxQuery(((original_qf_notexpanded:[[74 65 72 6d 73] TO [74 65 72 6d 73]])^1.5)))~4 ()", "parsedquery_toString":"+((((original_qf_notexpanded:[[7b 21] TO [7b 21]])^1.5) ((original_qf_notexpanded:[[71 66 3d 24 73 61 6d 70 6c 65 5f 71 66] TO [71 66 3d 24 73 61 6d 70 6c 65 5f 71 66]])^1.5) ((original_qf_notexpanded:[[70 66 3d 24 73 61 6d 70 6c 65 5f 70 66 7d 71 75 65 72 79] TO [70 66 3d 24 73 61 6d 70 6c 65 5f 70 66 7d 71 75 65 72 79]])^1.5) ((original_qf_notexpanded:[[74 65 72 6d 73] TO [74 65 72 6d 73]])^1.5))~4) ()", the expanded fields are the ones from the default `qf` and `pf` settings, and so i it looks like the local param syntax is not even recognized, that it's somehow being "short-circuited". Debug output indicates edismax parser is still used in this case, and this is true even if we change our query string to something like: q={!lucene ...} or q={!type=lucene ...} We've tried a number of variations, including (a) setting the 'sow' parameter to true and false, both inside the expression and as a standalone parameter (b) changing the luceneMatchVersion in the solrconfig (originally it was 6.0.0, have changed it to match Solr versions, both via re-uploading teh configset or creating a copy and modifying it before upload). What else should I look at? Changing the searchcomponent stack? thanks! AC