It should all be pretty clear from the API javadocs. Take a look at
BooleanQuery, which is that single query that you can add other
queries.
Good luck.
Otis
--- Charles [EMAIL PROTECTED] wrote:
Hi everyone,
First of all I'd like to thank you guys for developing a great search
engine
framework. I've tested it out and it works flawlessly (and really
fast too).
Right now I plan to create a more advance search capability. I
understand
how to construct the Query object using the QueryParser, but I would
like to
know how I can add in different types of queries (like range, terms,
boolean) all into one. I'm not sure if I can do this with the
QueryParser
and am looking for information on how to manually construct a Query
object
so i can combine all these requirements.
Here's what I want to do: I would like to have the user select values
from a
combo box (e.g. Price range, Area, Country, Number of rooms, land
area, is
Freehold or Leasehold etc). From what I gather this involves several
type of
queries including RangeQuery (for the price range), a TermQuery,
BooleanQuery etc. So the question is how do i combine all these types
of
queries into one so I can obtain a single Hits result that matches
all these
requirements?
Any advice or urls is very much appreciated.
Charles
- Original Message -
From: alex [EMAIL PROTECTED]
To: Lucene Users List [EMAIL PROTECTED]
Sent: Tuesday, January 21, 2003 3:23 PM
Subject: Re: how to join 2 queries togther
Thank you everyone for your help
- Original Message -
From: Lichtner, Guglielmo [EMAIL PROTECTED]
To: 'Lucene Users List' [EMAIL PROTECTED]
Sent: Monday, January 20, 2003 9:52 PM
Subject: RE: how to join 2 queries togther
From this code I think I see a possible problem.
I think one way to fix it is to parse the word in readLine() and
add a
term
query for each:
BooleanQuery query = new BooleanQuery();
System.out.print(will all of the words );
StringTokenizer tok1 = new StringTokenizer(in.readLine());
while (tok.hasMoreTokens()) {
query.add(new TermQuery(new Term(content,
tok1.nextToken()), true,
false);
}
System.out.print(without the words);
StringTokenizer tok2 = new StringTokenizer(in.readLine());
while (tok.hasMoreTokens()) {
query.add(new TermQuery(new Term(content,
tok2.nextToken()),
false,
true);
}
System.out.println(Searching for: + query);
Hits hits = searcher.search(query);
System.out.println(hits.length() + total matching documents
);
-Original Message-
From: alex [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 20, 2003 2:57 PM
To: Lucene Users List
Subject: Re: how to join 2 queries togther
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