You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Andy Lee <ag...@earthlink.net> on 2005/10/13 22:45:01 UTC

Do you believe in Clause sanity?

The API for BooleanQuery only seems to allow adding clauses.  The  
nearest way I can see to *remove* a clause is by laboriously  
constructing a new BooleanQuery (assuming you aren't absolutely tied  
to the original instance) and adding all the clauses from the  
original query except the one you're removing.  And *that's* rather  
cumbersome because you can't actually add a clause; you have to use  
one of the addRequired-/addProhibited- methods -- and they take  
arrays of String rather than the array of Term that you can get from  
a Clause.

It seems reasonable to me to want to remove clauses from a query.  Is  
there some reasonable way of doing this that I'm missing?

--Andy


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Do you believe in Clause sanity?

Posted by Andy Lee <ag...@earthlink.net>.
On Oct 17, 2005, at 2:50 PM, Doug Cutting wrote:
> Please submit a bug report, ideally with a patch file attached.

Okay, I just filed a bug ticket for myself here at work to remind me  
to submit a change request and patch to you when I get a chance. :)

--Andy


Re: Do you believe in Clause sanity?

Posted by Doug Cutting <cu...@nutch.org>.
Andy Lee wrote:
> Thanks, Doug.  In that case, please consider this a request for a  
> couple of API changes which you may be planning anyway:
> 
>  * addClause() and removeClause() methods in Query.
>  * Setters in Query.Clause for its term/phrase.

Please submit a bug report, ideally with a patch file attached.

Doug

Re: Do you believe in Clause sanity?

Posted by Andy Lee <ag...@earthlink.net>.
On Oct 17, 2005, at 1:44 PM, Doug Cutting wrote:
> Andy Lee wrote:
>> [...] Is there some design principle I'm missing that would be   
>> violated if clauses could be removed from a query?
>>
>
> No, not that I can think of.  The public constructors for Query are  
> limited in order to prohibit certain things that are not yet  
> supported, like optional and nested clauses.

Thanks, Doug.  In that case, please consider this a request for a  
couple of API changes which you may be planning anyway:

  * addClause() and removeClause() methods in Query.
  * Setters in Query.Clause for its term/phrase.

In the meantime, I've got my workaround, which is to create a new  
query from the old one, excluding the clauses I want to delete (which  
is more laborious than it could be, since I have to figure out which  
of Query's addXXX() methods to use for each clause).  Fortunately I'm  
not absolutely bound to the original Query instance.

Thanks again,
--Andy


Re: Do you believe in Clause sanity?

Posted by Doug Cutting <cu...@nutch.org>.
Andy Lee wrote:
> Not to become a one-person thread or anything (and I'll shut up if  this 
> attempt gets no answers), but this seems like a straightforward  
> question.  Is there some design principle I'm missing that would be  
> violated if clauses could be removed from a query?

No, not that I can think of.  The public constructors for Query are 
limited in order to prohibit certain things that are not yet supported, 
like optional and nested clauses.

Doug

Re: Do you believe in Clause sanity?

Posted by Andy Lee <ag...@earthlink.net>.
On Oct 13, 2005, at 5:21 PM, Andy Lee wrote:
>> It seems reasonable to me to want to remove clauses from a query.   
>> Is there some reasonable way of doing this that I'm missing?

Not to become a one-person thread or anything (and I'll shut up if  
this attempt gets no answers), but this seems like a straightforward  
question.  Is there some design principle I'm missing that would be  
violated if clauses could be removed from a query?

Here's a couple of examples where I think this would be desirable:

* If one has a visual query editor that lets the user construct a  
list of clauses, it seems reasonable to let the user delete a clause  
from a list.  Sure, you could reconstruct a new Query instance, but  
MVC design would more naturally suggest that you have a query object  
that gets modified in place.

* Say you want to show results of variations on a query as well as  
the original query.  The most straightforward way would be to modify  
the clauses.

--Andy


Re: Do you believe in Clause sanity?

Posted by Andy Lee <ag...@earthlink.net>.
Oops, I'm confusing libraries.  I meant I want to remove a Nutch  
Clause from a Nutch Query.

--Andy

On Oct 13, 2005, at 4:45 PM, Andy Lee wrote:

> The API for BooleanQuery only seems to allow adding clauses.  The  
> nearest way I can see to *remove* a clause is by laboriously  
> constructing a new BooleanQuery (assuming you aren't absolutely  
> tied to the original instance) and adding all the clauses from the  
> original query except the one you're removing.  And *that's* rather  
> cumbersome because you can't actually add a clause; you have to use  
> one of the addRequired-/addProhibited- methods -- and they take  
> arrays of String rather than the array of Term that you can get  
> from a Clause.
>
> It seems reasonable to me to want to remove clauses from a query.   
> Is there some reasonable way of doing this that I'm missing?
>
> --Andy
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Do you believe in Clause sanity?

Posted by Andy Lee <ag...@earthlink.net>.
Oops, I'm confusing libraries.  I meant I want to remove a Nutch  
Clause from a Nutch Query.

--Andy

On Oct 13, 2005, at 4:45 PM, Andy Lee wrote:

> The API for BooleanQuery only seems to allow adding clauses.  The  
> nearest way I can see to *remove* a clause is by laboriously  
> constructing a new BooleanQuery (assuming you aren't absolutely  
> tied to the original instance) and adding all the clauses from the  
> original query except the one you're removing.  And *that's* rather  
> cumbersome because you can't actually add a clause; you have to use  
> one of the addRequired-/addProhibited- methods -- and they take  
> arrays of String rather than the array of Term that you can get  
> from a Clause.
>
> It seems reasonable to me to want to remove clauses from a query.   
> Is there some reasonable way of doing this that I'm missing?
>
> --Andy
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>