Good afternoon solr community. I'm having an issue debugging an edismax query which appears to behave differently across two separate collections with what I believe to be the same default query parameters. Each collection contains different data but are configured using similar default query parameters.
Environment Solr cloud 7.6 Params API used to set query defaults (params.json) (solrconfig.xml request handler defaults are empty) Example query string searchString (q) = John Joan Winthorp Collection 1 default query params "set":{ "params1":{ "op":"AND", "df":"NAME", "wt":"json", "fl":"NAME ADDRESS EMAIL PHONE", "q":"{!edismax v=${searchString} df=NAME q.op=${op}}", "cursorMark":"*", "sort":"id desc", "echoParams":"all", "debug":"query", "_invariants_":{ "deftype":"edismax", "qf":"NAME ADDRESS EMAIL PHONE", "uf":"NAME ADDRESS EMAIL PHONE", "rows":"40", "lowercaseOperators":"true", "facet":"false", "facet.mincount":1, "facet.missing":"false", "hl":"on", "hl.method":"unified", "hl.bs.type":"SEPARATOR", "hl.tag.pre":"${", "hl.tag.post":"}", "hl.bs.separator":",", "hl.fl":"NAME ADDRESS EMAIL PHONE", "cache":"true", "explainOther":"false", "start":0} } } Query results (debug=query) for above params1 - select request handler sets useParams=params1 "q":"{!edismax v=\"john joan winthorp\" df=NAME q.op=AND}" "rawquerystring":"{!edismax v=\"john joan winthorp\" df=NAME q.op=AND}", "parsedquery_toString":"+(+((+NAME:john +NAME:joan +NAME:winthorp) | (+ADDRESS:john +ADDRESS:joan +ADDRESS:winthorp) | () | (+EMAIL:john +EMAIL:joan +EMAIL:winthorp) | (+PHONE:john +PHONE:joan +PHONE:winthorp)))" Collection 2 default query params "set":{ "params2":{ "op":"AND", "df":"CUSTOMER", "wt":"json", "fl":"*", "q":"{!edismax v=${searchString} df=CUSTOMER q.op=${op}}", "cursorMark":"*", "sort":"id desc", "debug":"query", "_invariants_":{ "deftype":"edismax", "qf":"CUSTOMER EMAIL PRODUCT", "uf":"*", "rows":"20", "facet":"true", "facet.mincount":1, "facet.limit":20, "facet.missing":"false", "hl":"on", "hl.method":"unified", "hl.bs.type":"SEPARATOR", "hl.tag.pre":"${", "hl.tag.post":"}", "hl.bs.separator":",", "hl.fl":"*", "cache":"true", "explainOther":"false", "echoParams":"none", "start":0} } } Query results (debug=true) for params2 above - select request handler sets useParams=params2 "q":"{!edismax v=\"john joan winthorp\" df=NAME q.op=AND}", "rawquerystring":"{!edismax v=\"john joan winthorp\" df=Goods_Descr q.op=AND}", "parsedquery_toString":"+(+(CUSTOMER:john | EMAIL:john | PRODUCT:john) +(CUSTOMER:joan | EMAIL:joan | PRODUCT:joan) +(CUSTOMER:winthorp | EMAIL:winthorp | PRODUCT:winthorp))" In summary I seem to get different search behaviours for the same edismax query executed against each collection. The first search is translated into a query which requires all terms be present in each individual qf field (i.e. (+NAME:john +NAME:joan +NAME:winthorp)... ). The second (my desired behaviour) is translated into a query where each term is OR'd over each qf field (i.e. +(CUSTOMER:john | EMAIL:john | PRODUCT:john) ...). q=john joan winthorp Query 1 - params1 "parsedquery_toString":"+(+((+NAME:john +NAME:joan +NAME:winthorp) | (+ADDRESS:john +ADDRESS:joan +ADDRESS:winthorp) | () | (+EMAIL:john +EMAIL:joan +EMAIL:winthorp) | (+PHONE:john +PHONE:joan +PHONE:winthorp)))" Query 2 - params2 "parsedquery_toString":"+(+(CUSTOMER:john | EMAIL:john | PRODUCT:john) +(CUSTOMER:joan | EMAIL:joan | PRODUCT:joan) +(CUSTOMER:winthorp | EMAIL:winthorp | PRODUCT:winthorp))" I copied the configset of the first collection when creating the second so most of the settings are identical across collections. Is anyone able to suggest or see any glaringly obvious configuration settings I may be overlooking to cause the queries to behave differently across collections? As always any advice would be greatly appreciated Thanks Dwane