Luke Shannon wrote:
The API I'm working with combines a series of queries into one larger one using a boolean query.
Queries on the same field get OR's into one big query. All remaining queries are AND'd with this big one.
Working with in this system I have:
arg = (mario luigi bobby joe) //i do have control of how this list is created
I pass this to the QueryParser:
Query query1 = QueryParser.parse(arg, "name", new StandardAnalyzer()); Query query2 = QueryParser.parse("stillhere", "olfaithfull", new StandardAnalyzer()); BooleanQuery typeNegativeSearch = new BooleanQuery(); typeNegativeSearch.add(query1, false, true); typeNegativeSearch.add(query2, true, false);
This is half the query.
It gets AND'd with the other half, to create what you see below:
+(type:181) +((-(name:tim name:harry name:bill) +olfaithfull:stillhere))
What I am having trouble with is getting the QueryParser to create this: -name:(tim bill harry)
I feel like this is something simple, but for some reason I can't figure it out.
Thanks,
Luke
Is the API something you control?
Lets call the other half of you query query3. To avoid the extra nesting you need to do the composition in a single boolean query.
Query query1 = QueryParser.parse(arg, "name", new StandardAnalyzer()); Query query2 = QueryParser.parse("stillhere", "olfaithfull", new StandardAnalyzer()); Query query3 = ....
BooleanQuery finalQuery = new BooleanQuery(); finalQuery.add(query1, false, true); finalQuery.add(query2, true, false); finalQuery.add(query3, true, false);
Cheers, Todd VanderVeen
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]