lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Volodymyr Bychkoviak <>
Subject Re: Negative Field Boost
Date Thu, 26 May 2005 16:06:15 GMT
string query should look like: "+includes:(red frogs) -excludes:(red frogs)"

You can play with MultiFieldQueryParser a bit.

Volodymyr Bychkoviak

Ryan Skow wrote:

>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?
>To unsubscribe, e-mail:
>For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message