Explanation.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: Describes the score computation for document and query. </summary>
  20. [Serializable]
  21. public class Explanation
  22. {
  23. private float value_Renamed; // the value of this node
  24. private System.String description; // what it represents
  25. private System.Collections.ArrayList details; // sub-explanations
  26. public Explanation()
  27. {
  28. }
  29. public Explanation(float value_Renamed, System.String description)
  30. {
  31. this.value_Renamed = value_Renamed;
  32. this.description = description;
  33. }
  34. /// <summary>The value assigned to this explanation node. </summary>
  35. public virtual float GetValue()
  36. {
  37. return value_Renamed;
  38. }
  39. /// <summary>Sets the value assigned to this explanation node. </summary>
  40. public virtual void  SetValue(float value_Renamed)
  41. {
  42. this.value_Renamed = value_Renamed;
  43. }
  44. /// <summary>A description of this explanation node. </summary>
  45. public virtual System.String GetDescription()
  46. {
  47. return description;
  48. }
  49. /// <summary>Sets the description of this explanation node. </summary>
  50. public virtual void  SetDescription(System.String description)
  51. {
  52. this.description = description;
  53. }
  54. /// <summary>The sub-nodes of this explanation node. </summary>
  55. public virtual Explanation[] GetDetails()
  56. {
  57. if (details == null)
  58. return null;
  59. return (Explanation[]) details.ToArray(typeof(Explanation));
  60. }
  61. /// <summary>Adds a sub-node to this explanation node. </summary>
  62. public virtual void  AddDetail(Explanation detail)
  63. {
  64. if (details == null)
  65. details = new System.Collections.ArrayList();
  66. details.Add(detail);
  67. }
  68. /// <summary>Render an explanation as text. </summary>
  69. public override System.String ToString()
  70. {
  71. return ToString(0);
  72. }
  73. private System.String ToString(int depth)
  74. {
  75. System.Text.StringBuilder buffer = new System.Text.StringBuilder();
  76. for (int i = 0; i < depth; i++)
  77. {
  78. buffer.Append("  ");
  79. }
  80. buffer.Append(GetValue());
  81. buffer.Append(" = ");
  82. buffer.Append(GetDescription());
  83. buffer.Append("n");
  84. Explanation[] details = GetDetails();
  85. if (details != null)
  86. {
  87. for (int i = 0; i < details.Length; i++)
  88. {
  89. buffer.Append(details[i].ToString(depth + 1));
  90. }
  91. }
  92. return buffer.ToString();
  93. }
  94. /// <summary>Render an explanation as HTML. </summary>
  95. public virtual System.String ToHtml()
  96. {
  97. System.Text.StringBuilder buffer = new System.Text.StringBuilder();
  98. buffer.Append("<ul>n");
  99. buffer.Append("<li>");
  100. buffer.Append(GetValue());
  101. buffer.Append(" = ");
  102. buffer.Append(GetDescription());
  103. buffer.Append("</li>n");
  104. Explanation[] details = GetDetails();
  105. if (details != null)
  106. {
  107. for (int i = 0; i < details.Length; i++)
  108. {
  109. buffer.Append(details[i].ToHtml());
  110. }
  111. }
  112. buffer.Append("</ul>n");
  113. return buffer.ToString();
  114. }
  115. }
  116. }