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

搜索引擎

开发平台:

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.Index
  18. {
  19. /// <summary>A Term represents a word from text.  This is the unit of search.  It is
  20. /// composed of two elements, the text of the word, as a string, and the name of
  21. /// the field that the text occured in, an interned string.
  22. /// Note that terms may represent more than words from text fields, but also
  23. /// things like dates, email addresses, urls, etc.  
  24. /// </summary>
  25. [Serializable]
  26. public sealed class Term : System.IComparable
  27. {
  28. internal System.String field;
  29. public /*internal*/ System.String text;
  30. /// <summary>Constructs a Term with the given field and text. </summary>
  31. public Term(System.String fld, System.String txt) : this(fld, txt, true)
  32. {
  33. }
  34. internal Term(System.String fld, System.String txt, bool intern)
  35. {
  36. field = intern ? String.Intern(fld) : fld; // field names are interned
  37. text = txt; // unless already known to be
  38. }
  39. /// <summary>Returns the field of this term, an interned string.   The field indicates
  40. /// the part of a document which this term came from. 
  41. /// </summary>
  42. public System.String Field()
  43. {
  44. return field;
  45. }
  46. /// <summary>Returns the text of this term.  In the case of words, this is simply the
  47. /// text of the word.  In the case of dates and other types, this is an
  48. /// encoding of the object as a string.  
  49. /// </summary>
  50. public System.String Text()
  51. {
  52. return text;
  53. }
  54. /// <summary> Optimized construction of new Terms by reusing same field as this Term
  55. /// - avoids field.intern() overhead 
  56. /// </summary>
  57. /// <param name="text">The text of the new term (field is implicitly same as this Term instance)
  58. /// </param>
  59. /// <returns> A new Term
  60. /// </returns>
  61. public Term CreateTerm(System.String text)
  62. {
  63. return new Term(field, text, false);
  64. }
  65. /// <summary>Compares two terms, returning true iff they have the same
  66. /// field and text. 
  67. /// </summary>
  68. public  override bool Equals(System.Object o)
  69. {
  70. if (o == null)
  71. return false;
  72. Term other = (Term) o;
  73. return field == other.field && text.Equals(other.text);
  74. }
  75. /// <summary>Combines the hashCode() of the field and the text. </summary>
  76. public override int GetHashCode()
  77. {
  78. return field.GetHashCode() + text.GetHashCode();
  79. }
  80. public int CompareTo(System.Object other)
  81. {
  82. return CompareTo((Term) other);
  83. }
  84. /// <summary>Compares two terms, returning a negative integer if this
  85. /// term belongs before the argument, zero if this term is equal to the
  86. /// argument, and a positive integer if this term belongs after the argument.
  87. /// The ordering of terms is first by field, then by text.
  88. /// </summary>
  89. public int CompareTo(Term other)
  90. {
  91. if (field == other.field)
  92. // fields are interned
  93. return String.CompareOrdinal(text, other.text);
  94. else
  95. return String.CompareOrdinal(field, other.field);
  96. }
  97. /// <summary>Resets the field and text of a Term. </summary>
  98. internal void  Set(System.String fld, System.String txt)
  99. {
  100. field = fld;
  101. text = txt;
  102. }
  103. public override System.String ToString()
  104. {
  105. return field + ":" + text;
  106. }
  107. private void  ReadObject(System.IO.BinaryReader in_Renamed)
  108. {
  109. // This function is private and is never been called, so this may not be a port issue.          // {{Aroush-1.4.3}}
  110.             // 'java.io.ObjectInputStream.defaultReadObject' was not converted                              // {{Aroush-1.4.3}}
  111. // in_Renamed.defaultReadObject();                                                              // {{Aroush-1.4.3}}
  112. field = String.Intern(field);
  113. }
  114.         // {{Aroush-1.4.3: or is this method is what we want (vs. the above)?!!
  115.         private void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
  116.         {
  117.             info.AddValue("field", field);
  118.             info.AddValue("text", text);
  119.         }
  120.         // Aroush-1.4.3}}
  121.     }
  122. }