[ 
https://issues.apache.org/jira/browse/SOLR-3823?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13454104#comment-13454104
 ] 

Hoss Man commented on SOLR-3823:
--------------------------------

bq. I couldn't tell that this issue was an actual problem or a case of users 
putting whitespace where it doesn't belong and prior versions being more 
forgiving.

James: the core of the bug was your use of SolrPluginUtils.parseFieldBoosts to 
try and parse the bq params.

This is not safe -- if you look at the method it is an extremely trivial 
utility that is specific for parsing qf/pf style strings containing a list of 
field names and boosts.  it's _not_ a safe way to parse an arbitrary query 
string, and any non trivial query string can cause problems with it.

AS you noted in SOLR-3278, parseFieldBoosts is used for parsing the "bf" param 
and that's actually a long standing unsafe bug as well (SOLR-2014) but since 
functions tend to be much simpler, it's historically been less problematic.  
when people run into problems with it, the workarround is to use 
"bq={!func}..." instead.

bq. I would rather get a fix that preserves the negative boost support

Since SOLR-3278 had not been released publicly outside of the ALPHA/BETA, my 
first priority was to fix the regression compared to 3.x where non-trivial bq 
queries worked fine.

The documented method of dealing with "negative boosting" in solr is actually 
the type of query that was the crux of this bug report, and i updated the tests 
you added in SOLR-3278 to use that pattern...

https://wiki.apache.org/solr/SolrRelevancyFAQ#How_do_I_give_a_negative_.28or_very_low.29_boost_to_documents_that_match_a_query.3F

I have no objections to supporting "true" negative boosts, but i think the 
right way to do it is in the query parsers / QParsers themselves (so that the 
boosts can be on any clause) and not just as a special hack for bq/bf (the fact 
that it works in bf is actualy just a fluke of it's buggy implementation) but 
as you can see in LUCENE-4378 this is a contentious idea.


                
> Parentheses in a boost query cause errors
> -----------------------------------------
>
>                 Key: SOLR-3823
>                 URL: https://issues.apache.org/jira/browse/SOLR-3823
>             Project: Solr
>          Issue Type: Bug
>          Components: query parsers
>    Affects Versions: 4.0-BETA
>         Environment: Mac, jdk 1.6, Chrome
>            Reporter: Mathos Marcer
>            Assignee: Hoss Man
>             Fix For: 4.0, 5.0
>
>
> When using a boost query (bq) that contains a parentheses (like this example 
> from the Relevancy Cookbook section of the wiki):
> {noformat}
>  ? defType = dismax 
>     & q = foo bar 
>     & bq = (*:* -xxx)^999 
> {noformat}
> You get the following error:
> org.apache.lucene.queryparser.classic.ParseException: Cannot parse '-xxx)': 
> Encountered " ")" ") "" at line 1, column 12. Was expecting one of: <EOF> 
> <AND> ... <OR> ... <NOT> ... "+" ... "-" ... <BAREOPER> ... "(" ... "*" ... 
> "^" ... <QUOTED> ... <TERM> ... <FUZZY_SLOP> ... <PREFIXTERM> ... <WILDTERM> 
> ... <REGEXPTERM> ... "[" ... "{" ... <NUMBER> ...

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to