lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Otis Gospodnetic <otis_gospodne...@yahoo.com>
Subject Re: MultiSearcher.java CRLF and rewrite PATCH
Date Tue, 02 Mar 2004 13:08:50 GMT
Hvala Mladen.

This looks good to me, so I'll check it in.
However, I think....ah, I see.
I was going to say: what about other Query sub-classes, but I guess
combine is not abstract, and Query's combine method throws
UnsupportedOperationException, so you can't assume the Query instances
passed to combine have combine....

Otis
P.S.
Do some code that throws exception with the old rewrite method, so I
can add it to the existing TestMultiSearcher unit test?
P.P.S.
CRLFs fixed - stuff from a recent contribution developed under Windows.

--- Mladen Turk <mturk@apache.org> wrote:
> 
> Hi,
> 
> Seems that MultiSearcher.java in CVS is using CRLF line endings.
> Is that intentional, and can it be formatted like the rest of code.
> Or is it just my CVS client?
> 
> 
> Second thing is that I have a patch for it, fixing rewrite.
> Current implementation throws exception when using multiple
> searchers,
> and mixed queries.
> 
> I've implemented my own combine instead relaying on original Query
> combine (that might be unimplemented in particular Query
> implementation
> class).
> 
> It's very useful for term highlighting.
> 
> MT.
> 
> Here is the code (since the file in CVS uses CRLF):
> 
> 
>   /*
>    * Combine as many queries as possible
>    */
>   private Query combine(Query[] queries) throws IOException {
> 
>     if (queries.length < 2) {
>         return queries[0];
>     }
> 
>     Query[] combined = new Query[2];
>     combined[0] = new BooleanQuery();
>     for (int i = 0; i < queries.length; i++) {
>         combined[1] = queries[i];
>         if (queries[i] instanceof BooleanQuery ||
>             queries[i] instanceof MultiTermQuery ||
>             queries[i] instanceof PrefixQuery ||
>             queries[i] instanceof RangeQuery) {
>             combined[0] = Query.mergeBooleanQueries(combined);
>         }
>         else if (queries[i] instanceof PhraseQuery) {
>             Term[] queryTerms = ((PhraseQuery)queries[i]).getTerms();
>             for (int j = 0; j < queryTerms.length; j++) {
>                 TermQuery q = new TermQuery(queryTerms[j]);
>                 ((BooleanQuery)combined[0]).add(q, true, false);
>             }           
>         }
>     }                
>     
>     return combined[0];
>     
>   }
>   
>   public Query rewrite(Query original) throws IOException {
>     Query[] queries = new Query[searchables.length];
>     for (int i = 0; i < searchables.length; i++) {
>       queries[i] = searchables[i].rewrite(original);
>     }
>     return combine(queries);
>   }



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


Mime
View raw message