Skip to content

Instantly share code, notes, and snippets.

@jrduncans
Created August 11, 2009 19:52
Show Gist options
  • Save jrduncans/166075 to your computer and use it in GitHub Desktop.
Save jrduncans/166075 to your computer and use it in GitHub Desktop.
Index: ClassificationQuery.java
===================================================================
--- ClassificationQuery.java (revision 8133)
+++ ClassificationQuery.java (revision 8130)
@@ -9,10 +9,10 @@
import org.apache.lucene.index.TermDocs;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.QueryWeight;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.Similarity;
-import org.apache.lucene.search.Weight;
/**
* Custom query for Classification to provide scoring based on classification
@@ -62,17 +62,21 @@
}
/**
- * @see org.apache.lucene.search.Scorer#doc()
+ * @see org.apache.lucene.search.Scorer#docID()
*/
@Override
- public int doc()
+ public int docID()
{
return this.termDocs.doc();
}
/**
- * @see org.apache.lucene.search.Scorer#explain(int)
+ * Deprecated. Please use
+ * IndexSearcher.explain(org.apache.lucene.search.QueryWeight, int) or
+ * QueryWeight.explain(org.apache.lucene.index.IndexReader, int)
+ * instead.
*/
+ @SuppressWarnings("deprecation")
@Override
public Explanation explain(final int arg0) throws IOException
{
@@ -81,12 +85,12 @@
}
/**
- * @see org.apache.lucene.search.Scorer#next()
+ * @see org.apache.lucene.search.Scorer#nextDoc()
*/
@Override
- public boolean next() throws IOException
+ public int nextDoc() throws IOException
{
- return this.termDocs.next();
+ return this.termDocs.next() ? docID() : NO_MORE_DOCS;
}
/**
@@ -96,7 +100,7 @@
public float score() throws IOException
{
final Document document =
- this.indexReader.document(this.doc(), new MapFieldSelector(
+ this.indexReader.document(this.docID(), new MapFieldSelector(
new String[] {"nodeid", "nodescore"}));
final String[] nodeIds = document.get("nodeid").split("\\s");
@@ -126,19 +130,23 @@
}
/**
- * @see org.apache.lucene.search.Scorer#skipTo(int)
+ * @see org.apache.lucene.search.Scorer#advance(int)
*/
@Override
- public boolean skipTo(final int target) throws IOException
+ public int advance(final int target) throws IOException
{
- return this.termDocs.skipTo(target);
+ if (target == NO_MORE_DOCS) {
+ return NO_MORE_DOCS;
+ }
+
+ return this.termDocs.skipTo(target) ? docID() : NO_MORE_DOCS;
}
}
/**
* Weight implementation for classification.
*/
- private class ClassificationWeight implements Weight
+ private class ClassificationWeight extends QueryWeight
{
/** Serial version UID. */
private static final long serialVersionUID = -3433003550378502891L;
@@ -157,9 +165,9 @@
}
/**
- * @see org.apache.lucene.search.Weight#explain(org.apache.lucene.index.IndexReader,
- * int)
+ * @see QueryWeight#explain(IndexReader, int)
*/
+ @Override
public Explanation explain(final IndexReader arg0, final int arg1)
throws IOException
{
@@ -168,34 +176,41 @@
}
/**
- * @see org.apache.lucene.search.Weight#getQuery()
+ * @see org.apache.lucene.search.QueryWeight#getQuery()
*/
+ @Override
public Query getQuery()
{
return ClassificationQuery.this;
}
/**
- * @see org.apache.lucene.search.Weight#getValue()
+ * @see org.apache.lucene.search.QueryWeight#getValue()
*/
+ @Override
public float getValue()
{
// TODO what's this for?
return (float)1.0;
}
-
+
/**
- * @see org.apache.lucene.search.Weight#normalize(float)
+ * @see org.apache.lucene.search.QueryWeight#normalize(float)
*/
+ @Override
public void normalize(final float arg0)
{
// TODO Auto-generated method stub
- }
+ }
/**
- * @see org.apache.lucene.search.Weight#scorer(org.apache.lucene.index.IndexReader)
+ * @see QueryWeight#scorer(IndexReader, boolean, boolean)
*/
- public Scorer scorer(final IndexReader reader) throws IOException
+ @Override
+ public Scorer scorer(
+ final IndexReader reader,
+ final boolean scoreDocsInOrder,
+ final boolean topScorer) throws IOException
{
final TermDocs termDocs =
reader.termDocs(new Term("nodeid", String
@@ -210,8 +225,9 @@
}
/**
- * @see org.apache.lucene.search.Weight#sumOfSquaredWeights()
+ * @see org.apache.lucene.search.QueryWeight#sumOfSquaredWeights()
*/
+ @Override
public float sumOfSquaredWeights() throws IOException
{
// TODO what's this for?
@@ -237,10 +253,11 @@
}
/**
- * @see org.apache.lucene.search.Query#createWeight(org.apache.lucene.search.Searcher)
+ * @see Query#createQueryWeight(Searcher)
*/
@Override
- protected Weight createWeight(final Searcher searcher) throws IOException
+ public QueryWeight createQueryWeight(final Searcher searcher)
+ throws IOException
{
return new ClassificationWeight(searcher);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment