/* * Copyright 2004 The Apache Software Foundation * * Licensed 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. */ using System; using Term = Lucene.Net.Index.Term; namespace Lucene.Net.Search { /// An abstract base class for search implementations. /// Implements some common utility methods. /// public abstract class Searcher : Lucene.Net.Search.Searchable { public Searcher() { InitBlock(); } private void InitBlock() { similarity = Similarity.GetDefault(); } /// Returns the documents matching query. /// BooleanQuery.TooManyClauses public Hits Search(Query query) { return Search(query, (Filter) null); } /// Returns the documents matching query and /// filter. /// /// BooleanQuery.TooManyClauses public virtual Hits Search(Query query, Filter filter) { return new Hits(this, query, filter); } /// Returns documents matching query sorted by /// sort. /// /// BooleanQuery.TooManyClauses public virtual Hits Search(Query query, Sort sort) { return new Hits(this, query, null, sort); } /// Returns documents matching query and filter, /// sorted by sort. /// /// BooleanQuery.TooManyClauses public virtual Hits Search(Query query, Filter filter, Sort sort) { return new Hits(this, query, filter, sort); } /// Lower-level search API. /// ///

{@link HitCollector#Collect(int,float)} is called for every non-zero /// scoring document. /// ///

Applications should only use this if they need all of the /// matching documents. The high-level search API ({@link /// Searcher#Search(Query)}) is usually more efficient, as it skips /// non-high-scoring hits. ///

Note: The score passed to this method is a raw score. /// In other words, the score will not necessarily be a float whose value is /// between 0 and 1. ///

/// BooleanQuery.TooManyClauses public virtual void Search(Query query, HitCollector results) { Search(query, (Filter) null, results); } /// The Similarity implementation used by this searcher. private Similarity similarity; /// Expert: Set the Similarity implementation used by this Searcher. /// /// /// /// public virtual void SetSimilarity(Similarity similarity) { this.similarity = similarity; } /// Expert: Return the Similarity implementation used by this Searcher. /// ///

This defaults to the current value of {@link Similarity#GetDefault()}. ///

public virtual Similarity GetSimilarity() { return this.similarity; } // inherit javadoc public virtual int[] DocFreqs(Term[] terms) { int[] result = new int[terms.Length]; for (int i = 0; i < terms.Length; i++) { result[i] = DocFreq(terms[i]); } return result; } public abstract void Close(); public abstract Lucene.Net.Search.Explanation Explain(Lucene.Net.Search.Weight param1, int param2); public abstract Lucene.Net.Search.Query Rewrite(Lucene.Net.Search.Query param1); public abstract void Search(Lucene.Net.Search.Query param1, Lucene.Net.Search.Filter param2, Lucene.Net.Search.HitCollector param3); public abstract Lucene.Net.Search.TopDocs Search(Lucene.Net.Search.Weight param1, Lucene.Net.Search.Filter param2, int param3); public abstract int DocFreq(Lucene.Net.Index.Term param1); public abstract Lucene.Net.Search.Explanation Explain(Lucene.Net.Search.Query param1, int param2); public abstract int MaxDoc(); public abstract Lucene.Net.Documents.Document Doc(int param1); public abstract Lucene.Net.Search.TopDocs Search(Lucene.Net.Search.Query param1, Lucene.Net.Search.Filter param2, int param3); public abstract Lucene.Net.Search.TopFieldDocs Search(Lucene.Net.Search.Query param1, Lucene.Net.Search.Filter param2, int param3, Lucene.Net.Search.Sort param4); public abstract Lucene.Net.Search.TopFieldDocs Search(Lucene.Net.Search.Weight param1, Lucene.Net.Search.Filter param2, int param3, Lucene.Net.Search.Sort param4); public abstract void Search(Lucene.Net.Search.Weight param1, Lucene.Net.Search.Filter param2, Lucene.Net.Search.HitCollector param3); } }