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
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