/* * 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; namespace Lucene.Net.Search { /// Expert: Compares two ScoreDoc objects for sorting. /// ///

Created: Feb 3, 2004 9:00:16 AM /// ///

/// Tim Jones (Nacimiento Software) /// /// lucene 1.4 /// /// $Id: ScoreDocComparator.cs,v 1.2 2005/10/06 19:29:57 dsd Exp $ /// public struct ScoreDocComparator_Fields { /// Special comparator for sorting hits according to computed relevance (document score). public readonly static ScoreDocComparator RELEVANCE; /// Special comparator for sorting hits according to index order (document number). public readonly static ScoreDocComparator INDEXORDER; static ScoreDocComparator_Fields() { RELEVANCE = new AnonymousClassScoreDocComparator(); INDEXORDER = new AnonymousClassScoreDocComparator1(); } } public class AnonymousClassScoreDocComparator : ScoreDocComparator { public virtual int Compare(ScoreDoc i, ScoreDoc j) { if (i.score > j.score) return - 1; if (i.score < j.score) return 1; return 0; } public virtual System.IComparable SortValue(ScoreDoc i) { return (float) i.score; } public virtual int SortType() { return SortField.SCORE; } } public class AnonymousClassScoreDocComparator1 : ScoreDocComparator { public virtual int Compare(ScoreDoc i, ScoreDoc j) { if (i.doc < j.doc) return - 1; if (i.doc > j.doc) return 1; return 0; } public virtual System.IComparable SortValue(ScoreDoc i) { return (System.Int32) i.doc; } public virtual int SortType() { return SortField.DOC; } } public interface ScoreDocComparator { /// Compares two ScoreDoc objects and returns a result indicating their /// sort order. /// /// First ScoreDoc /// /// Second ScoreDoc /// /// -1 if i should come before j
1 if i should come after j
0 if they are equal ///
/// /// int Compare(ScoreDoc i, ScoreDoc j); /// Returns the value used to sort the given document. The /// object returned must implement the java.io.Serializable /// interface. This is used by multisearchers to determine how to collate results from their searchers. /// /// /// /// Document /// /// Serializable object /// System.IComparable SortValue(ScoreDoc i); /// Returns the type of sort. Should return SortField.SCORE, SortField.DOC, SortField.STRING, SortField.INTEGER, /// SortField.FLOAT or SortField.CUSTOM. It is not valid to return SortField.AUTO. /// This is used by multisearchers to determine how to collate results from their searchers. /// /// One of the constants in SortField. /// /// /// int SortType(); } }