Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
TextFragment.cs
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 using System;
19 using System.Text;
20 
21 namespace Lucene.Net.Search.Highlight
22 {
23  /// <summary> Low-level class used to record information about a section of a document
24  /// with a score.
25  /// </summary>
26  public class TextFragment
27  {
28  private StringBuilder markedUpText;
29 
30 
31  public TextFragment(StringBuilder markedUpText, int textStartPos, int fragNum)
32  {
33  this.markedUpText = markedUpText;
34  this.TextStartPos = textStartPos;
35  this.FragNum = fragNum;
36  }
37 
38  public float Score { get; protected internal set; }
39  public int TextEndPos { get; protected internal set; }
40  public int TextStartPos { get; protected internal set; }
41 
42  /// <summary>
43  /// the fragment sequence number
44  /// </summary>
45  public int FragNum { get; protected internal set; }
46 
47 
48  /// <summary></summary>
49  /// <param name="frag2">Fragment to be merged into this one</param>
50  public void Merge(TextFragment frag2)
51  {
52  TextEndPos = frag2.TextEndPos;
53  Score = Math.Max(Score, frag2.Score);
54  }
55 
56  /// <summary>
57  /// true if this fragment follows the one passed
58  /// </summary>
59  public bool Follows(TextFragment fragment)
60  {
61  return TextStartPos == fragment.TextEndPos;
62  }
63 
64  /// <summary>
65  /// Returns the marked-up text for this text fragment
66  /// </summary>
67  public override String ToString()
68  {
69  return markedUpText.ToString(TextStartPos, TextEndPos - TextStartPos);
70  }
71 
72  }
73 }