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

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2005 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. using Document = Lucene.Net.Documents.Document;
  18. namespace Lucene.Net.Search
  19. {
  20. /// <summary> Wrapper used by {@link HitIterator} to provide a lazily loaded hit
  21. /// from {@link Hits}.
  22. /// 
  23. /// </summary>
  24. /// <author>  Jeremy Rayner
  25. /// </author>
  26. [Serializable]
  27. public class Hit
  28. {
  29. private Document doc = null;
  30. private bool resolved = false;
  31. private Hits hits = null;
  32. private int hitNumber;
  33. /// <summary> Constructed from {@link HitIterator}</summary>
  34. /// <param name="hits">Hits returned from a search
  35. /// </param>
  36. /// <param name="hitNumber">Hit index in Hits
  37. /// </param>
  38. internal Hit(Hits hits, int hitNumber)
  39. {
  40. this.hits = hits;
  41. this.hitNumber = hitNumber;
  42. }
  43. /// <summary> Returns document for this hit.
  44. /// 
  45. /// </summary>
  46. /// <seealso cref="Hits.Doc(int)">
  47. /// </seealso>
  48. public virtual Document GetDocument()
  49. {
  50. if (!resolved)
  51. FetchTheHit();
  52. return doc;
  53. }
  54. /// <summary> Returns score for this hit.
  55. /// 
  56. /// </summary>
  57. /// <seealso cref="Hits.Score(int)">
  58. /// </seealso>
  59. public virtual float GetScore()
  60. {
  61. return hits.Score(hitNumber);
  62. }
  63. /// <summary> Returns id for this hit.
  64. /// 
  65. /// </summary>
  66. /// <seealso cref="Hits.Id(int)">
  67. /// </seealso>
  68. public virtual int GetId()
  69. {
  70. return hits.Id(hitNumber);
  71. }
  72. private void  FetchTheHit()
  73. {
  74. doc = hits.Doc(hitNumber);
  75. resolved = true;
  76. }
  77. // provide some of the Document style interface (the simple stuff)
  78. /// <summary> Returns the boost factor for this hit on any field of the underlying document.
  79. /// 
  80. /// </summary>
  81. /// <seealso cref="Document.GetBoost()">
  82. /// </seealso>
  83. public virtual float GetBoost()
  84. {
  85. return GetDocument().GetBoost();
  86. }
  87. /// <summary> Returns the string value of the field with the given name if any exist in
  88. /// this document, or null.  If multiple fields exist with this name, this
  89. /// method returns the first value added. If only binary fields with this name
  90. /// exist, returns null.
  91. /// 
  92. /// </summary>
  93. /// <seealso cref="Document.Get(String)">
  94. /// </seealso>
  95. public virtual System.String Get(System.String name)
  96. {
  97. return GetDocument().Get(name);
  98. }
  99. /// <summary> Prints the parameters to be used to discover the promised result.</summary>
  100. public override System.String ToString()
  101. {
  102. System.Text.StringBuilder buffer = new System.Text.StringBuilder();
  103. buffer.Append("Hit<");
  104. buffer.Append(hits.ToString());
  105. buffer.Append(" [");
  106. buffer.Append(hitNumber);
  107. buffer.Append("] ");
  108. if (resolved)
  109. {
  110. buffer.Append("resolved");
  111. }
  112. else
  113. {
  114. buffer.Append("unresolved");
  115. }
  116. buffer.Append(">");
  117. return buffer.ToString();
  118. }
  119. }
  120. }