Index: MultiSearcher.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/search/MultiSearcher.java,v retrieving revision 1.17 diff -u -r1.17 MultiSearcher.java --- MultiSearcher.java 29 Mar 2004 22:48:03 -0000 1.17 +++ MultiSearcher.java 12 Nov 2004 09:37:44 -0000 @@ -27,18 +27,28 @@ * or {@link #search(Query,Filter)} methods. */ public class MultiSearcher extends Searcher { - private Searchable[] searchables; + private Searcher[] searchables; private int[] starts; private int maxDoc = 0; + + private class MultiSimilarity extends DefaultSimilarity { + /* (non-Javadoc) + * @see org.apache.lucene.search.Similarity#idf(org.apache.lucene.index.Term, org.apache.lucene.search.Searcher) + */ + public float idf(Term term, Searcher searcher) throws IOException { + return super.idf(term, MultiSearcher.this); + } + } /** Creates a searcher which searches searchables. */ - public MultiSearcher(Searchable[] searchables) throws IOException { + public MultiSearcher(Searcher[] searchables) throws IOException { this.searchables = searchables; starts = new int[searchables.length + 1]; // build starts array for (int i = 0; i < searchables.length; i++) { starts[i] = maxDoc; maxDoc += searchables[i].maxDoc(); // compute maxDocs + setSimilarity(new MultiSimilarity()); } starts[searchables.length] = maxDoc; } @@ -187,4 +197,10 @@ return searchables[i].explain(query,doc-starts[i]); // dispatch to searcher } + public void setSimilarity(Similarity similarity) { + super.setSimilarity(similarity); + for (int i = 0; i < searchables.length; i++) { + searchables[i].setSimilarity(similarity); + } + } }