[
https://issues.apache.org/jira/browse/SOLR-8812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15201408#comment-15201408
]
Jan Høydahl commented on SOLR-8812:
-----------------------------------
Also, in SOLR-2649 we have
{code}
public ExtendedSolrQueryParser(QParser parser, String defaultField) {
super(parser, defaultField);
- // don't trust that our parent class won't ever change its default
- setDefaultOperator(QueryParser.Operator.OR);
+ // Respect the q.op parameter before mm will be applied later
+ SolrParams defaultParams =
SolrParams.wrapDefaults(parser.getLocalParams(), parser.getParams());
+ QueryParser.Operator defaultOp =
QueryParsing.getQueryParserDefaultOperator(
+ parser.getReq().getSchema(), defaultParams.get(QueryParsing.OP));
+ setDefaultOperator(defaultOp);
}
{code}
This means the mm calculations may now get REQUIRED clauses as input, while
before SOLR-2649 when defaultOperator was forced to OR, all clauses would enter
as OPTIONAL. Since {{minShouldMatch}} is supposed to be calculated only between
optional clauses, this will fail.
> ExtendedDismaxQParser (edismax) ignores Boolean OR when q.op=AND
> ----------------------------------------------------------------
>
> Key: SOLR-8812
> URL: https://issues.apache.org/jira/browse/SOLR-8812
> Project: Solr
> Issue Type: Bug
> Components: query parsers
> Affects Versions: 5.5
> Reporter: Ryan Steinberg
> Priority: Blocker
> Fix For: 6.0, 5.5.1
>
> Attachments: SOLR-8812.patch
>
>
> The edismax parser ignores Boolean OR in queries when q.op=AND. This behavior
> is new to Solr 5.5.0 and an unexpected major change.
> Example:
> "q": "id:12345 OR zzzzzzzzzz",
> "defType": "edismax",
> "q.op": "AND",
> where "12345" is a known document ID and "zzzzzzzzzz" is a string NOT present
> in my data
> Version 5.5.0 produces zero results:
> "rawquerystring": "id:12345 OR zzzzzzzzzz",
> "querystring": "id:12345 OR zzzzzzzzzz",
> "parsedquery": "(+((id:12345
> DisjunctionMaxQuery((text:zzzzzzzzzz)))~2))/no_coord",
> "parsedquery_toString": "+((id:12345 (text:zzzzzzzzzz))~2)",
> "explain": {},
> "QParser": "ExtendedDismaxQParser"
> Version 5.4.0 produces one result as expected
> "rawquerystring": "id:12345 OR zzzzzzzzzz",
> "querystring": "id:12345 OR zzzzzzzzzz",
> "parsedquery": "(+(id:12345
> DisjunctionMaxQuery((text:zzzzzzzzzz))))/no_coord",
> "parsedquery_toString": "+(id:12345 (text:zzzzzzzzzz))"
> "explain": {},
> "QParser": "ExtendedDismaxQParser"
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]