Hello,

My name is Cameron VandenBerg, and I am a Senior Software Engineer at Carnegie 
Mellon University for Professor Jamie Callan working on search engine research. 
 In my current project I have implemented the scoring logic for our academic 
search engine, Indri (http://lemurproject.org/indri.php) on top of Lucene.

The major difference between Lucene and Indri is that Indri will give a 
document a "smoothing score" to a document that does not contain the search 
term, which has improved our search ranking accuracy.

We are interested in adding a smoothing score method to the Scorable abstract 
class like this:

/**
* Allows access to the score of a Query
*/
public abstract class Scorable {

  /**
   * Returns the score of the current document matching the query.
   */
  public abstract float score() throws IOException;

  /**
   * Returns the smoothing score of the current document matching the query.
   */
  public abstract float smoothingScore(String docId) throws IOException;

This method can return 0 by default or be implemented in subscorers that anyone 
would want to implement.  In my case, I use this method in my custom 
implementation of the TermScorer to call the docScorer with the docId and a 
count of 0 like this:

       @Override
       public float smoothingScore(DisiWrapper topList, int docId) throws 
IOException {
              return docScorer.score(docId, 0);
       }

We are very open to different implementations as well if there is another 
suggestion.  Please let me know what steps I can take to implement this change 
and submit for review.

Thank you,
Cameron VandenBerg


Reply via email to