diff --git lucene/src/java/org/apache/lucene/search/similarities/BM25SimilarityProvider.java lucene/src/java/org/apache/lucene/search/similarities/BM25SimilarityProvider.java
deleted file mode 100644
index 1b10313..0000000
--- lucene/src/java/org/apache/lucene/search/similarities/BM25SimilarityProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.lucene.search.similarities;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-public class BM25SimilarityProvider extends DefaultSimilarityProvider {
-
-  private BM25Similarity impl = new BM25Similarity();
-
-  public BM25Similarity get(String field) {
-    return impl;
-  }
-  
-  /** Sets the {@code Similarity} returned by {@link #get}. */
-  public void set(BM25Similarity sim) {
-    impl = sim;
-  }
-}
diff --git lucene/src/java/org/apache/lucene/search/similarities/BasicSimilarityProvider.java lucene/src/java/org/apache/lucene/search/similarities/BasicSimilarityProvider.java
new file mode 100644
index 0000000..47cee1b
--- /dev/null
+++ lucene/src/java/org/apache/lucene/search/similarities/BasicSimilarityProvider.java
@@ -0,0 +1,48 @@
+package org.apache.lucene.search.similarities;
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A simple {@link Similarity} provider that returns in
+ * {@code get(String field)} the object passed to its constructor. This class
+ * is aimed at non-VSM models, and therefore both the {@link #coord} and
+ * {@link #queryNorm} methods return {@code 1}. Use
+ * {@link DefaultSimilarityProvider} for {@link DefaultSimilarity}.
+ */
+public class BasicSimilarityProvider implements SimilarityProvider {
+  private final Similarity sim;
+  
+  public BasicSimilarityProvider(Similarity sim) {
+    this.sim = sim;
+  }
+  
+  @Override
+  public float coord(int overlap, int maxOverlap) {
+    return 1f;
+  }
+
+  @Override
+  public float queryNorm(float sumOfSquaredWeights) {
+    return 1f;
+  }
+
+  @Override
+  public Similarity get(String field) {
+    return sim;
+  }
+}
\ No newline at end of file
diff --git lucene/src/java/org/apache/lucene/search/similarities/package.html lucene/src/java/org/apache/lucene/search/similarities/package.html
index 9999b54..b07091f 100644
--- lucene/src/java/org/apache/lucene/search/similarities/package.html
+++ lucene/src/java/org/apache/lucene/search/similarities/package.html
@@ -74,9 +74,10 @@ optimizations can always be implemented in subclasses; see
 <p>{@link org.apache.lucene.search.similarities.SimilarityProvider}s instantiate
 Similarities and compute the normalization value for the query.
 {@link org.apache.lucene.search.similarities.DefaultSimilarityProvider} is used
-by both {@link org.apache.lucene.search.similarities.DefaultSimilarity} and
-(indirectly) by{@link org.apache.lucene.search.similarities.BM25Similarity},
-and the query norm is defined as <code>1 / (numTerms in field)^0.5</code>.</p>
+by {@link org.apache.lucene.search.similarities.DefaultSimilarity}, while
+{@link org.apache.lucene.search.similarities.BasicSimilarityProvider} can return
+an arbitrary {@link org.apache.lucene.search.similarities.Similarity}. In
+either, the query norm is defined as <code>1 / (numTerms in field)^0.5</code>.</p>
 
 
 <a name="changingSimilarity"></a>
@@ -100,8 +101,9 @@ and the query norm is defined as <code>1 / (numTerms in field)^0.5</code>.</p>
     you'll want to simply subclass an existing method, be it
     {@link org.apache.lucene.search.similarities.DefaultSimilarity} or a descendant of
     {@link org.apache.lucene.search.similarities.EasySimilarity}) and
-    {@link org.apache.lucene.search.similarities.SimilarityProvider}, and then
-    use the new class by calling
+    {@link org.apache.lucene.search.similarities.SimilarityProvider} (or use
+    {@link org.apache.lucene.search.similarities.BasicSimilarityProvider}), and
+    then register the new class by calling
     {@link org.apache.lucene.index.IndexWriterConfig#setSimilarityProvider(SimilarityProvider)}
     before indexing and
     {@link org.apache.lucene.search.IndexSearcher#setSimilarityProvider(SimilarityProvider)}
diff --git lucene/src/test/org/apache/lucene/search/similarities/TestEasySimilarity.java lucene/src/test/org/apache/lucene/search/similarities/TestEasySimilarity.java
index 02d7dd1..456beed 100644
--- lucene/src/test/org/apache/lucene/search/similarities/TestEasySimilarity.java
+++ lucene/src/test/org/apache/lucene/search/similarities/TestEasySimilarity.java
@@ -556,7 +556,7 @@ public class TestEasySimilarity extends LuceneTestCase {
     Query q = new TermQuery(new Term(FIELD_BODY, "heart"));
     
     for (EasySimilarity sim : sims) {
-      searcher.setSimilarityProvider(new EasySimilarityProvider(sim));
+      searcher.setSimilarityProvider(new BasicSimilarityProvider(sim));
       TopDocs topDocs = searcher.search(q, 1000);
       assertEquals("Failed: " + sim.toString(), 3, topDocs.totalHits);
     }
@@ -570,7 +570,7 @@ public class TestEasySimilarity extends LuceneTestCase {
     Query q = new TermQuery(new Term(FIELD_BODY, "heart"));
     
     for (EasySimilarity sim : sims) {
-      searcher.setSimilarityProvider(new EasySimilarityProvider(sim));
+      searcher.setSimilarityProvider(new BasicSimilarityProvider(sim));
       TopDocs topDocs = searcher.search(q, 1000);
       assertEquals("Failed: " + sim.toString(), 2, topDocs.scoreDocs[0].doc);
     }
@@ -583,34 +583,4 @@ public class TestEasySimilarity extends LuceneTestCase {
     dir.close();
     super.tearDown();
   }
-  
-  // ------------------------- Helper class definitions ------------------------
-  
-  /**
-   * A simple Similarity provider that returns in {@code get(String field)} the
-   * object passed to its constructor.
-   */
-  // nocommit a real EasySimilarityProvider with coord and queryNorm implemented?
-  public static class EasySimilarityProvider implements SimilarityProvider {
-    private EasySimilarity sim;
-    
-    public EasySimilarityProvider(EasySimilarity sim) {
-      this.sim = sim;
-    }
-    
-    @Override
-    public float coord(int overlap, int maxOverlap) {
-      return 1f;
-    }
-
-    @Override
-    public float queryNorm(float sumOfSquaredWeights) {
-      return 1f;
-    }
-
-    @Override
-    public EasySimilarity get(String field) {
-      return sim;
-    }
-  }
 }
