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

搜索引擎

开发平台:

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. public class SegmentTermVector : TermFreqVector
  20. {
  21. private System.String field;
  22. private System.String[] terms;
  23. private int[] termFreqs;
  24. internal SegmentTermVector(System.String field, System.String[] terms, int[] termFreqs)
  25. {
  26. this.field = field;
  27. this.terms = terms;
  28. this.termFreqs = termFreqs;
  29. }
  30. /// <summary> </summary>
  31. /// <returns> The number of the field this vector is associated with
  32. /// </returns>
  33. public virtual System.String GetField()
  34. {
  35. return field;
  36. }
  37. public override System.String ToString()
  38. {
  39. System.Text.StringBuilder sb = new System.Text.StringBuilder();
  40. sb.Append('{');
  41. sb.Append(field).Append(": ");
  42. if (terms != null)
  43. {
  44. for (int i = 0; i < terms.Length; i++)
  45. {
  46. if (i > 0)
  47. sb.Append(", ");
  48. sb.Append(terms[i]).Append('/').Append(termFreqs[i]);
  49. }
  50. }
  51. sb.Append('}');
  52. return sb.ToString();
  53. }
  54. public virtual int Size()
  55. {
  56. return terms == null?0:terms.Length;
  57. }
  58. public virtual System.String[] GetTerms()
  59. {
  60. return terms;
  61. }
  62. public virtual int[] GetTermFrequencies()
  63. {
  64. return termFreqs;
  65. }
  66. public virtual int IndexOf(System.String termText)
  67. {
  68. if (terms == null)
  69. return - 1;
  70. int res = System.Array.BinarySearch(terms, termText);
  71. return res >= 0?res:- 1;
  72. }
  73. public virtual int[] IndexesOf(System.String[] termNumbers, int start, int len)
  74. {
  75. // TODO: there must be a more efficient way of doing this.
  76. //       At least, we could advance the lower bound of the terms array
  77. //       as we find valid indexes. Also, it might be possible to leverage
  78. //       this even more by starting in the middle of the termNumbers array
  79. //       and thus dividing the terms array maybe in half with each found index.
  80. int[] res = new int[len];
  81. for (int i = 0; i < len; i++)
  82. {
  83. res[i] = IndexOf(termNumbers[start + i]);
  84. }
  85. return res;
  86. }
  87. }
  88. }