Alex,

If you are using an older version of Lucene, and at the line input (going
into q1 and q2) your user is entering terms without a plus or minus, I think
what your code is actually doing is creating the following query:

+( a b c) -(d e f)  (which is +(a OR b OR c) OR -(d OR e OR f))

What I think you want to create is:
+(a AND b AND c) AND NOT (d AND e AND f), or
+a +b +c -d -e -f

You can check it quickly by, for the line input going into q1, enter on the
line: +a +b +c, and for the line input going into q2 enter on the
line: -d -e -f.  That should give you what you're looking for.
Alternatively, if you follow Doug's comment about using one of the later
Lucene versions and changing the default operator, your code should work the
way you want when terms are entered without pluses or minuses.

HTH,

Terry

----- Original Message -----
From: "alex" <[EMAIL PROTECTED]>
To: "Lucene Users List" <[EMAIL PROTECTED]>
Sent: Monday, January 20, 2003 3:52 PM
Subject: Re: how to join 2 queries togther


> I m trying to achieve something like the advanced search for google
>
> where the user has these option of allowing
>
> will all of the words =
> without the words =
>
> http://www.google.com/advanced_search?hl=en
>
> ----- Original Message -----
> From: "Doug Cutting" <[EMAIL PROTECTED]>
> To: "Lucene Users List" <[EMAIL PROTECTED]>
> Sent: Monday, January 20, 2003 8:08 PM
> Subject: Re: how to join 2 queries togther
>
>
> > Do you want hits to contain the word "words" or not?  You've got it in
> > both clauses...
> >
> > Also, "+(a b c)" requires that any of "a" "b" or "c" be in a document,
> > but not necessarily all of them.  If you want it to contain all of them
> > then each term must be required, e.g., "+a +b +c".  In the latest
> > sources this can be achieved through the query parser with:
> >     queryParser.setOperator(DEFAULT_OPERATOR_AND);
> >
> > I'm not quite sure precisely what you're trying to do, so it's hard to
> > tell you how to do it.
> >
> > Doug
> >
> > alex wrote:
> > > thxs for your suggestion this is what i have written but it does not
> work
> > > any suggestion on how to get it to work ?
> > >
> > >  System.out.print("will all of the words ");
> > >         String q1 = in.readLine();
> > >  System.out.print("without the words");
> > >         String q2 = in.readLine();
> > >
> > >         BooleanQuery query = new BooleanQuery();
> > >               Query matchall = QueryParser.parse(q1, "content",
> analyzer);
> > >         query.add(matchall, true, false);
> > >               Query exclude = QueryParser.parse( q2, "content" ,
> analyzer);
> > >         query.add(exclude, false, true);
> > >
> > >         System.out.println("Searching for: " +
> query.toString("content"));
> > >         Hits hits = searcher.search(query);
> > >         System.out.println(hits.length() + " total matching documents
> ");
> > >
> > >
> > > ----- Original Message -----
> > > From: "Lichtner, Guglielmo" <[EMAIL PROTECTED]>
> > > To: "'Lucene Users List'" <[EMAIL PROTECTED]>
> > > Sent: Monday, January 20, 2003 4:04 PM
> > > Subject: RE: how to join 2 queries togther
> > >
> > >
> > >
> > >>I'm a newbie, but I could suggest this:
> > >>
> > >>BooleanQuery bq = new BooleanQuery();
> > >>bq.add(firstQuery, true, false);
> > >>bq.add(secondQuery, false, true);
> > >>
> > >>That should make the first query required, and the second
> > >>one prohibited, which is like saying "+firstQuery -secondQuery"
> > >>
> > >>I haven't tried this myself but I did try this for an either/or
> > >
> > > combination,
> > >
> > >>and it does work for me.
> > >>
> > >>-----Original Message-----
> > >>From: alex [mailto:[EMAIL PROTECTED]]
> > >>Sent: Monday, January 20, 2003 10:54 AM
> > >>To: Lucene User
> > >>Subject: how to join 2 queries togther
> > >>
> > >>
> > >>hi all
> > >>
> > >>I have a method which takes in a normal query breaks into token and
> places
> > >
> > > +
> > >
> > >>in front it
> > >>I have a second method which does the same instead puts a - sign front
> the
> > >>token
> > >>
> > >>the reason i have done this is so that the user do not need to add +
> and -
> > >>signs by themselfs and also I cound
> > >> not get the booleanQuery to work
> > >>
> > >>this makes it so that i have 2 queries
> > >>
> > >>1) a file must contain all these words
> > >>2) a file must exclude this words
> > >>
> > >>my question is how do join these 2 queries togther so it filters out
> words
> > >>that i want and do not want ?
> > >>
> > >>Alex
> > >>
> > >>--
> > >>To unsubscribe, e-mail:
> > >
> > > <mailto:[EMAIL PROTECTED]>
> > >
> > >>For additional commands, e-mail:
> > >
> > > <mailto:[EMAIL PROTECTED]>
> > >
> > >>
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to