ScoreDocComparator.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:4k
源码类别:

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2004 The Apache Software Foundation
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  * 
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * 
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16. using System;
  17. namespace Lucene.Net.Search
  18. {
  19. /// <summary> Expert: Compares two ScoreDoc objects for sorting.
  20. /// 
  21. /// <p>Created: Feb 3, 2004 9:00:16 AM 
  22. /// 
  23. /// </summary>
  24. /// <author>   Tim Jones (Nacimiento Software)
  25. /// </author>
  26. /// <since>   lucene 1.4
  27. /// </since>
  28. /// <version>  $Id: ScoreDocComparator.java 150348 2004-05-19 23:05:27Z tjones $
  29. /// </version>
  30. public struct ScoreDocComparator_Fields
  31. {
  32. /// <summary>Special comparator for sorting hits according to computed relevance (document score). </summary>
  33. public readonly static ScoreDocComparator RELEVANCE;
  34. /// <summary>Special comparator for sorting hits according to index order (document number). </summary>
  35. public readonly static ScoreDocComparator INDEXORDER;
  36. static ScoreDocComparator_Fields()
  37. {
  38. RELEVANCE = new AnonymousClassScoreDocComparator();
  39. INDEXORDER = new AnonymousClassScoreDocComparator1();
  40. }
  41. }
  42. public class AnonymousClassScoreDocComparator : ScoreDocComparator
  43. {
  44. public virtual int Compare(ScoreDoc i, ScoreDoc j)
  45. {
  46. if (i.score > j.score)
  47. return - 1;
  48. if (i.score < j.score)
  49. return 1;
  50. return 0;
  51. }
  52. public virtual System.IComparable SortValue(ScoreDoc i)
  53. {
  54. return (float) i.score;
  55. }
  56. public virtual int SortType()
  57. {
  58. return SortField.SCORE;
  59. }
  60. }
  61. public class AnonymousClassScoreDocComparator1 : ScoreDocComparator
  62. {
  63. public virtual int Compare(ScoreDoc i, ScoreDoc j)
  64. {
  65. if (i.doc < j.doc)
  66. return - 1;
  67. if (i.doc > j.doc)
  68. return 1;
  69. return 0;
  70. }
  71. public virtual System.IComparable SortValue(ScoreDoc i)
  72. {
  73. return (System.Int32) i.doc;
  74. }
  75. public virtual int SortType()
  76. {
  77. return SortField.DOC;
  78. }
  79. }
  80. public interface ScoreDocComparator
  81. {
  82. /// <summary> Compares two ScoreDoc objects and returns a result indicating their
  83. /// sort order.
  84. /// </summary>
  85. /// <param name="i">First ScoreDoc
  86. /// </param>
  87. /// <param name="j">Second ScoreDoc
  88. /// </param>
  89. /// <returns> <code>-1</code> if <code>i</code> should come before <code>j</code><br><code>1</code> if <code>i</code> should come after <code>j</code><br><code>0</code> if they are equal
  90. /// </returns>
  91. /// <seealso cref="java.util.Comparator">
  92. /// </seealso>
  93. int Compare(ScoreDoc i, ScoreDoc j);
  94. /// <summary> Returns the value used to sort the given document.  The
  95. /// object returned must implement the java.io.Serializable
  96. /// interface.  This is used by multisearchers to determine how to collate results from their searchers.
  97. /// </summary>
  98. /// <seealso cref="FieldDoc">
  99. /// </seealso>
  100. /// <param name="i">Document
  101. /// </param>
  102. /// <returns> Serializable object
  103. /// </returns>
  104. System.IComparable SortValue(ScoreDoc i);
  105. /// <summary> Returns the type of sort.  Should return <code>SortField.SCORE</code>, <code>SortField.DOC</code>, <code>SortField.STRING</code>, <code>SortField.INTEGER</code>, 
  106. /// <code>SortField.FLOAT</code> or <code>SortField.CUSTOM</code>.  It is not valid to return <code>SortField.AUTO</code>.
  107. /// This is used by multisearchers to determine how to collate results from their searchers.
  108. /// </summary>
  109. /// <returns> One of the constants in SortField.
  110. /// </returns>
  111. /// <seealso cref="SortField">
  112. /// </seealso>
  113. int SortType();
  114. }
  115. }