lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ryan Skow" <>
Subject Negative Field Boost
Date Thu, 26 May 2005 15:59:00 GMT
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:
      includes: red green blue
      excludes: frogs birds snails

      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:

View raw message