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

Hoss Man commented on LUCENE-4378:
----------------------------------

bq. In my opinion, a better approach is something like the BoostingQuery in 
lucene/queries for this demoting of terms.

My confusion is that your argument seems like it confluates the concept/syntax 
with an implementation -- you're saying you don't like a particular 
implementation, therefore you don't think QueryParser should allow for the 
concept.

I'm suggesting we let the syntax in the grammer allow for the concept of 
negative boosts, and then let the implementations of QueryParser decide what it 
means -- the default implementation could be "error".  Some users could choose 
to have a subclass with "simple" implementation (literally using the negative 
boost on the query) if it makes sense for them, and other users could do other 
things.

For example: suppose i wanted to use BoostingQuery like you suggest, but i want 
to be able to use it in some way with the QueryParser syntax.   If the grammer 
_allowed_ for "foo bar^-100" to do *something* then by subclassing the 
QueryParser i could impelement demoting items using this syntax with something 
like...

{noformat}
public MyParser extends QueryParser {
  @Override
  public BooleanQuery getBooleanQuery(List<BooleanClause> clauses,
                               boolean disableCoord) throws ParseException {
     BooleanQuery q = super.getBooleanQuery(clauses, disableCoord);
     Query result = q;
     for (clause : q.getClauses(){ 
       if (clause.getBoose() < 0) {
         q.removeClause(clause);
         penalty = -1/clause.getBoost();
         clause.setBoost(1);
         result = new BoostingQuery(result, clause, penalty)
     }
     return result;
  }
  @Override
  public void checkBoost(Query q, float boost) {
    // override super which will throw an exception if boost is negative
    // :NOOP:
  }
}
{noformat}



                
> QueryParsers do not support negative boosts
> -------------------------------------------
>
>                 Key: LUCENE-4378
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4378
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Hoss Man
>         Attachments: LUCENE-4378-test.patch
>
>
> Negative query boosts have been supported at the "Query" object level for a 
> long time (resulting in negative scores for matching documents), but 
> evidently we never updated the QueryParsers to know about this - attempting 
> to specify a negative boost in the query string results in a parse error.
> we should probably add this to the parser grammer(s)

--
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