Perhaps you'd find it easier to implement the equivalent: log(s1(d, q))*a1 + ... + log(sN(d, q))*aN
On Fri, Apr 10, 2009 at 12:56 PM, Steven Bethard <beth...@stanford.edu>wrote: > 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, > right? > > 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, > > Steve > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org > >