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

Reply via email to