Here is the logical structure of the document I'm working with: The 'Document' has two fields: 'includes' - List of terms that provide positive boost 'excludes' - List of terms that provide negative boost
Here is a usage scenario: DocumentA includes: red green blue excludes: frogs birds snails DocumentB includes: red green blue excludes: <empty> Here is the desired effect for a couple query strings: Query: red Result: both documents would be returned with equal score Query: red frogs Result: only DocumentB would be returned because DocumentA excludes frogs My question is: can Lucene do this with a single query? One option is to do separate queries searching first the 'includes' and then on the 'excludes' field, then removing documents from the 'includes' Hits that exist in the 'excludes' Hits. This solution to works, but is somewhat cumbersome and inefficient. I've tried calling excludesField.setBoost((float)-1) as well as passing small decimals in the setBoost method, but that still adds a smaller value to the score instead of subtracting from it. Has anyone solved this problem in better/different ways? Thanks! --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]