lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steven Bethard <>
Subject exponential boosts
Date Fri, 10 Apr 2009 19:56:44 GMT
I need to have a scoring model of the form:

    s1(d, q)^a1 * s2(d, q)^a2 * ... * sN(d, q)^aN

where "d" is a document, "q" is a query, "sK" is a scoring function, and
"aK" is the exponential boost factor for that scoring function. As a
simple example, I might have:

    s1 = TF-IDF score matching "text" field (e.g. a TermQuery)
    a1 = 1.0

    s2 = TF-IDF score matching "author" field (e.g. a TermQuery)
    a2 = 0.1

    s3 = PageRank score (e.g. a FieldScoreQuery)
    a3 = 0.5

It's important that the "aK" parameters are exponents in the scoring
function and not just multipliers because it allows me to do a
particular kind of optimized search for the best parameter values.

How can I achieve this? My first thought was just that I should set the
boost factor for each query, but the boost factor is just a multiplier,

My second thought was to subclass CustomScoreQuery and override
customScore, but as far as I can tell, CustomScoreQuery can only combine
a Query with a ValueSourceQuery, while I need to combine a Query with
another Query (e.g. the example above with two TermQuery scores).

How should I go about this?

Thanks in advance,


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

View raw message