blob: 8822bed45ced3e6a453a9a8030f0d8ab5f1ce208 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3"/>
<title>Lucene.Net: core/Index/ParallelReader.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="lucene-net-icon-128x128.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Lucene.Net
&#160;<span id="projectnumber">3.0.3</span>
</div>
<div id="projectbrief">Lucene.Net is a .NET port of the Java Lucene Indexing Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="Index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Packages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Properties</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1efe588324fc547683bba4a3f1bac847.html">core</a></li><li class="navelem"><a class="el" href="dir_508bd2a9867f606940156debe4946ca8.html">Index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ParallelReader.cs</div> </div>
</div><!--header-->
<div class="contents">
<a href="_parallel_reader_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * this work for additional information regarding copyright ownership.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * (the &quot;License&quot;); you may not use this file except in compliance with</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * limitations under the License.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">using</span> System;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">using</span> System.Collections.Generic;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">using</span> System.Linq;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">using</span> Lucene.Net.Support;</div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="code" href="_parallel_reader_8cs.html#a2ad6aef8641c7b7a6cf9277f7d54b2cd"> 22</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_more_like_this_8cs.html#a2ad6aef8641c7b7a6cf9277f7d54b2cd">Document</a> = Lucene.Net.Documents.Document;</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="_parallel_reader_8cs.html#a64b447ee53d30ce66ebd27b2715e7bca"> 23</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_directory_reader_8cs.html#a64b447ee53d30ce66ebd27b2715e7bca">FieldSelector</a> = Lucene.Net.Documents.FieldSelector;</div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="_parallel_reader_8cs.html#a3224fc08fe6527421e834726e81bcd3f"> 24</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_parallel_reader_8cs.html#a3224fc08fe6527421e834726e81bcd3f">FieldSelectorResult</a> = Lucene.Net.Documents.FieldSelectorResult;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span>Lucene.Net.Index</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html"> 45</a></span>&#160; <span class="keyword">public</span> <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html" title="An IndexReader which reads multiple, parallel indexes. Each index added must have the same number of ...">ParallelReader</a>:<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a>, System.ICloneable</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">private</span> List&lt;IndexReader&gt; readers = <span class="keyword">new</span> List&lt;IndexReader&gt;();</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">private</span> List&lt;bool&gt; decrefOnClose = <span class="keyword">new</span> List&lt;bool&gt;(); <span class="comment">// remember which subreaders to decRef on close</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">internal</span> <span class="keywordtype">bool</span> incRefReaders = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">private</span> SortedDictionary&lt;string, IndexReader&gt; fieldToReader = <span class="keyword">new</span> SortedDictionary&lt;string, IndexReader&gt;();</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">private</span> IDictionary&lt;IndexReader, ICollection&lt;string&gt;&gt; readerToFields = <span class="keyword">new</span> HashMap&lt;IndexReader, ICollection&lt;string&gt;&gt;();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">private</span> List&lt;IndexReader&gt; storedFieldReaders = <span class="keyword">new</span> List&lt;IndexReader&gt;();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">private</span> <span class="keywordtype">int</span> maxDoc;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">private</span> <span class="keywordtype">int</span> numDocs;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">private</span> <span class="keywordtype">bool</span> hasDeletions;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#af4a539a073bbb0f130cec4a6d66af9d0"> 61</a></span>&#160; <span class="keyword">public</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html" title="An IndexReader which reads multiple, parallel indexes. Each index added must have the same number of ...">ParallelReader</a>():this(true)</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#ae4249db877a9130a848d6cb60390a5f3"> 69</a></span>&#160; <span class="keyword">public</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html" title="An IndexReader which reads multiple, parallel indexes. Each index added must have the same number of ...">ParallelReader</a>(<span class="keywordtype">bool</span> closeSubReaders):base()</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; this.incRefReaders = !closeSubReaders;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a0ef8cfe190315e0d8d4d8288f43d0187"> 76</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Add(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; Add(reader, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a89198d5872ac2c09c71363cb9cda10bf"> 94</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Add(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader, <span class="keywordtype">bool</span> ignoreStoredFields)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (readers.Count == 0)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; this.maxDoc = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#ac7694e685dde51863b8974da924fa439" title="Returns one greater than the largest possible document number. This may be used to, e.g., determine how big to allocate an array which will have an element for every document number in an index. ">MaxDoc</a>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; this.numDocs = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a300ecbc61b021d9ae600e1b00c61a851" title="Returns the number of documents in this index. ">NumDocs</a>();</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; this.hasDeletions = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#ae5873f4e3a1253dd2cad0849eb74d9e0" title="Returns true if any documents have been deleted ">HasDeletions</a>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> (reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#ac7694e685dde51863b8974da924fa439" title="Returns one greater than the largest possible document number. This may be used to, e.g., determine how big to allocate an array which will have an element for every document number in an index. ">MaxDoc</a> != maxDoc)</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// check compatibility</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> System.ArgumentException(<span class="stringliteral">&quot;All readers must have same maxDoc: &quot;</span> + maxDoc + <span class="stringliteral">&quot;!=&quot;</span> + reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#ac7694e685dde51863b8974da924fa439" title="Returns one greater than the largest possible document number. This may be used to, e.g., determine how big to allocate an array which will have an element for every document number in an index. ">MaxDoc</a>);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a300ecbc61b021d9ae600e1b00c61a851" title="Returns the number of documents in this index. ">NumDocs</a>() != numDocs)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> System.ArgumentException(<span class="stringliteral">&quot;All readers must have same numDocs: &quot;</span> + numDocs + <span class="stringliteral">&quot;!=&quot;</span> + reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a300ecbc61b021d9ae600e1b00c61a851" title="Returns the number of documents in this index. ">NumDocs</a>());</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; ICollection&lt;string&gt; fields = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a8c4e81993a2de016248031c3766f3ab7" title="Get a list of unique field names that exist in this index and have the specified field option informa...">GetFieldNames</a>(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a>.FieldOption.ALL);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; readerToFields[reader] = fields;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">foreach</span>(var field <span class="keywordflow">in</span> fields)</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// update fieldToReader map</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Do a containskey firt to mimic java behavior</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (!fieldToReader.ContainsKey(field) || fieldToReader[field] == null)</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; fieldToReader[field] = reader;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (!ignoreStoredFields)</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; storedFieldReaders.Add(reader); <span class="comment">// add to storedFieldReaders</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; readers.Add(reader);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (incRefReaders)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; reader.IncRef();</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; decrefOnClose.Add(incRefReaders);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#ac33363caf92e66de574355393ef0934c"> 132</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> System.Object Clone()</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> DoReopen(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">catch</span> (System.Exception ex)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> System.SystemException(ex.Message, ex);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#afcbeba5870b6dff1c93564ad93666a9a"> 162</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> Reopen()</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; lock (<span class="keyword">this</span>)</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> DoReopen(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">virtual</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> DoReopen(<span class="keywordtype">bool</span> doClone)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">bool</span> reopened = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; IList&lt;IndexReader&gt; newReaders = <span class="keyword">new</span> List&lt;IndexReader&gt;();</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; </div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">foreach</span>(var oldReader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> newReader = null;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (doClone)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; newReader = (<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a>) oldReader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a85d97a1e9145da71986b43a0c9f162b5" title="Efficiently clones the IndexReader (sharing most internal state). On cloning a reader with pending ch...">Clone</a>();</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; newReader = oldReader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#afdbae91b13509eca9832c2b4aa33591d" title="Refreshes an IndexReader if the index has changed since this instance was (re)opened. Opening an IndexReader is an expensive operation. This method can be used to refresh an existing IndexReader to reduce these costs. This method tries to only load segments that have changed or were created after the IndexReader was (re)opened. If the index has not changed since this instance was (re)opened, then this call is a NOOP and returns this instance. Otherwise, a new instance is returned. The old instance is not closed and remains usable. If the reader is reopened, even though they share resources internally, it&#39;s safe to make changes (deletions, norms) with the new reader. All shared mutable state obeys &quot;copy on write&quot; semantics to ensure the changes are not seen by other readers. You can determine whether a reader was actually reopened by comparing the old instance with the instance returned by this method:">Reopen</a>();</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; newReaders.Add(newReader);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// if at least one of the subreaders was updated we remember that</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// and return a new ParallelReader</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (newReader != oldReader)</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; reopened = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; success = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">finally</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (!success &amp;&amp; reopened)</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; newReaders.Count; i++)</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> r = newReaders[i];</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (r != readers[i])</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; r.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a1e6264ef01957145748af40d689eaf4d">Close</a>();</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">catch</span> (System.IO.IOException)</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// keep going - we want to clean up as much as possible</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (reopened)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; List&lt;bool&gt; newDecrefOnClose = <span class="keyword">new</span> List&lt;bool&gt;();</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; ParallelReader pr = <span class="keyword">new</span> ParallelReader();</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; readers.Count; i++)</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> oldReader = readers[i];</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> newReader = newReaders[i];</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (newReader == oldReader)</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; newDecrefOnClose.Add(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; newReader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a708656e6bce03eae40f2d08151ef4017" title="Expert: increments the refCount of this IndexReader instance. RefCounts are used to determine when a ...">IncRef</a>();</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// this is a new subreader instance, so on close() we don&#39;t</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// decRef but close it </span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; newDecrefOnClose.Add(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; pr.Add(newReader, !storedFieldReaders.Contains(oldReader));</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; pr.decrefOnClose = newDecrefOnClose;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; pr.incRefReaders = incRefReaders;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> pr;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// No subreader was refreshed</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div>
<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#aea7cb1dbf72234afc249a81aa5bfdeb3"> 257</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> NumDocs()</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// Don&#39;t call ensureOpen() here (it could affect performance)</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> numDocs;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> MaxDoc</div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a5b0aa5b500d0bc2ac27c6dea5a8b808c"> 264</a></span>&#160; {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// Don&#39;t call ensureOpen() here (it could affect performance)</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> maxDoc;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> HasDeletions</div>
<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#ab6878ba1e2fdbafbde12aeed28056802"> 273</a></span>&#160; {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// Don&#39;t call ensureOpen() here (it could affect performance)</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> hasDeletions;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// check first reader</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#af80a55511277c7ad2e21b9049e037f8f"> 282</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> IsDeleted(<span class="keywordtype">int</span> n)</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Don&#39;t call ensureOpen() here (it could affect performance)</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (readers.Count &gt; 0)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> readers[0].IsDeleted(n);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; </div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// delete in all readers</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">override</span> <span class="keywordtype">void</span> DoDelete(<span class="keywordtype">int</span> n)</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">foreach</span>(var reader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; reader.DeleteDocument(n);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; hasDeletions = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// undeleteAll in all readers</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">override</span> <span class="keywordtype">void</span> DoUndeleteAll()</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">foreach</span>(var reader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; reader.UndeleteAll();</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; hasDeletions = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// append fields from storedFieldReaders</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#aa93fc898407f560f026202333c3007e7"> 311</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="_more_like_this_8cs.html#a2ad6aef8641c7b7a6cf9277f7d54b2cd">Document</a> <a class="code" href="_more_like_this_8cs.html#a2ad6aef8641c7b7a6cf9277f7d54b2cd">Document</a>(<span class="keywordtype">int</span> n, <a class="code" href="_directory_reader_8cs.html#a64b447ee53d30ce66ebd27b2715e7bca">FieldSelector</a> fieldSelector)</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2ad6aef8641c7b7a6cf9277f7d54b2cd">Document</a> result = <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a2ad6aef8641c7b7a6cf9277f7d54b2cd">Document</a>();</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">foreach</span>(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader <span class="keywordflow">in</span> storedFieldReaders)</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">bool</span> include = (fieldSelector == null);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (!include)</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; var fields = readerToFields[reader];</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">foreach</span>(var field <span class="keywordflow">in</span> fields)</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (fieldSelector.Accept(field) != <a class="code" href="_parallel_reader_8cs.html#a3224fc08fe6527421e834726e81bcd3f">FieldSelectorResult</a>.NO_LOAD)</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; include = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (include)</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; var fields = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#ae5a8698ada40868908ea27f502337ee2" title="Returns the stored fields of the nth Document in this index. NOTE: for performance reasons...">Document</a>(n, fieldSelector).GetFields();</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">foreach</span>(var field <span class="keywordflow">in</span> fields)</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; result.Add(field);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; </div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// get all vectors</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a2cecaaa6e8f36e7f624bc0d89f858fb8"> 343</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_i_term_freq_vector.html" title="Provides access to stored term vector of a document field. The vector consists of the name of the fie...">ITermFreqVector</a>[] GetTermFreqVectors(<span class="keywordtype">int</span> n)</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; IList&lt;ITermFreqVector&gt; results = <span class="keyword">new</span> List&lt;ITermFreqVector&gt;();</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">foreach</span>(var e <span class="keywordflow">in</span> fieldToReader)</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; System.String field = e.Key;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = e.Value;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_i_term_freq_vector.html" title="Provides access to stored term vector of a document field. The vector consists of the name of the fie...">ITermFreqVector</a> vector = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a93ef270cec13352696660ca154d4a1be" title="Return a term frequency vector for the specified document and field. The returned vector contains ter...">GetTermFreqVector</a>(n, field);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (vector != null)</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; results.Add(vector);</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> results.ToArray();</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#ab485730cba3015076ded9a87929184ec"> 359</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_i_term_freq_vector.html" title="Provides access to stored term vector of a document field. The vector consists of the name of the fie...">ITermFreqVector</a> GetTermFreqVector(<span class="keywordtype">int</span> n, System.String field)</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = (fieldToReader[field]);</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> reader == null?null:reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a93ef270cec13352696660ca154d4a1be" title="Return a term frequency vector for the specified document and field. The returned vector contains ter...">GetTermFreqVector</a>(n, field);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
<div class="line"><a name="l00367"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a8ce8dc42a44d9c5befc71afc9970bfb5"> 367</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> GetTermFreqVector(<span class="keywordtype">int</span> docNumber, System.String field, <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term_vector_mapper.html" title="The TermVectorMapper can be used to map Term Vectors into your own structure instead of the parallel ...">TermVectorMapper</a> mapper)</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = (fieldToReader[field]);</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (reader != null)</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a93ef270cec13352696660ca154d4a1be" title="Return a term frequency vector for the specified document and field. The returned vector contains ter...">GetTermFreqVector</a>(docNumber, field, mapper);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; </div>
<div class="line"><a name="l00377"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a7eeeba214dc425a8eac3c23f8d0534be"> 377</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> GetTermFreqVector(<span class="keywordtype">int</span> docNumber, <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term_vector_mapper.html" title="The TermVectorMapper can be used to map Term Vectors into your own structure instead of the parallel ...">TermVectorMapper</a> mapper)</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">foreach</span>(var e <span class="keywordflow">in</span> fieldToReader)</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; System.String field = e.Key;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = e.Value;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a93ef270cec13352696660ca154d4a1be" title="Return a term frequency vector for the specified document and field. The returned vector contains ter...">GetTermFreqVector</a>(docNumber, field, mapper);</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; </div>
<div class="line"><a name="l00389"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#ae68ab75a85248c6ea230bf5220d30724"> 389</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> HasNorms(System.String field)</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = fieldToReader[field];</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> reader != null &amp;&amp; reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a951d3ff3357bfe9839aff739f79a064e" title="Returns true if there are norms stored for this field. ">HasNorms</a>(field);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
<div class="line"><a name="l00396"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a90229ea132ef3dd1605056a208f2f912"> 396</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> byte[] Norms(System.String field)</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = fieldToReader[field];</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> reader == null?null:reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#af4de7403582385c9c14de9a58fca523c" title="Returns the byte-encoded normalization factor for the named field of every document. This is used by the search code to score documents. ">Norms</a>(field);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; </div>
<div class="line"><a name="l00403"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a177fd49b0313b3df914f5887ede97e7a"> 403</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Norms(System.String field, byte[] result, <span class="keywordtype">int</span> offset)</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = fieldToReader[field];</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (reader != null)</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#af4de7403582385c9c14de9a58fca523c" title="Returns the byte-encoded normalization factor for the named field of every document. This is used by the search code to score documents. ">Norms</a>(field, result, offset);</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">override</span> <span class="keywordtype">void</span> DoSetNorm(<span class="keywordtype">int</span> n, System.String field, byte value_Renamed)</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = fieldToReader[field];</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span> (reader != null)</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; reader.DoSetNorm(n, field, value_Renamed);</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a9b9629fa760d1b59fdf1cf66c3e3622c"> 418</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term_enum.html" title="Abstract class for enumerating terms. Term enumerations are always ordered by Term.compareTo(). Each term in the enumeration is greater than all that precede it. ">TermEnum</a> Terms()</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> ParallelTermEnum(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; </div>
<div class="line"><a name="l00424"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a54969ccd9f80761ecdd8c719af1c32da"> 424</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term_enum.html" title="Abstract class for enumerating terms. Term enumerations are always ordered by Term.compareTo(). Each term in the enumeration is greater than all that precede it. ">TermEnum</a> Terms(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term.html" title="A Term represents a word from text. This is the unit of search. It is composed of two elements...">Term</a> term)</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> ParallelTermEnum(<span class="keyword">this</span>, term);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
<div class="line"><a name="l00430"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a8f70011e123385c38008f92c3139707a"> 430</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> DocFreq(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term.html" title="A Term represents a word from text. This is the unit of search. It is composed of two elements...">Term</a> term)</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader = fieldToReader[term.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term.html#a2ecfa7c0860798920d089654f34aa222" title="Returns the field of this term, an interned string. The field indicates the part of a document which ...">Field</a>];</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> reader == null?0:reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a64a1dd38f0e39bd79e5f46ce59ce967b" title="Returns the number of documents containing the term t.">DocFreq</a>(term);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; </div>
<div class="line"><a name="l00437"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a9c908c1152c90ef5eefa0b292943c492"> 437</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_term_docs.html" title="TermDocs provides an interface for enumerating &lt;document, frequency&gt; pairs for a term. The document portion names each document containing the term. Documents are indicated by number. The frequency portion gives the number of times the term occurred in each document. The pairs are ordered by document number. ">TermDocs</a> <a class="code" href="_field_cache_impl_8cs.html#a058de2d1c801e53325f35357f213391f">TermDocs</a>(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term.html" title="A Term represents a word from text. This is the unit of search. It is composed of two elements...">Term</a> term)</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> ParallelTermDocs(<span class="keyword">this</span>, term);</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div>
<div class="line"><a name="l00443"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#acf4b212f07a062f505cb896275b7cacc"> 443</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_term_docs.html" title="TermDocs provides an interface for enumerating &lt;document, frequency&gt; pairs for a term. The document portion names each document containing the term. Documents are indicated by number. The frequency portion gives the number of times the term occurred in each document. The pairs are ordered by document number. ">TermDocs</a> <a class="code" href="_field_cache_impl_8cs.html#a058de2d1c801e53325f35357f213391f">TermDocs</a>()</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> ParallelTermDocs(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
<div class="line"><a name="l00449"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a3606bc680ce27ab9dfef217200e4f88a"> 449</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_term_positions.html" title="TermPositions provides an interface for enumerating the &lt;document, frequency, &lt;position&gt;* &gt; tuples fo...">TermPositions</a> <a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a>(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term.html" title="A Term represents a word from text. This is the unit of search. It is composed of two elements...">Term</a> term)</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> ParallelTermPositions(<span class="keyword">this</span>, term);</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; </div>
<div class="line"><a name="l00455"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a8bac0348ecc9d24acc294973e888c89d"> 455</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="interface_lucene_1_1_net_1_1_index_1_1_term_positions.html" title="TermPositions provides an interface for enumerating the &lt;document, frequency, &lt;position&gt;* &gt; tuples fo...">TermPositions</a> <a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a>()</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> ParallelTermPositions(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div>
<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#abee5e3bbad5a6d5da42b06ccc0d39f12"> 462</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> IsCurrent()</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">foreach</span> (var reader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; {</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (!reader.IsCurrent())</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// all subreaders are up to date</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#a0b321102b4a59b579616cd50109dc40c"> 477</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> IsOptimized()</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">foreach</span> (var reader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (!reader.IsOptimized())</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">// all subindexes are optimized</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">long</span> <a class="code" href="_arabic_analyzer_8cs.html#a63c914dcb7d19365ff0f7c6ea7ef77c4">Version</a></div>
<div class="line"><a name="l00495"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#afe30fa87b1239dd119ba74fff67fbbc1"> 495</a></span>&#160; {</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">throw</span> <span class="keyword">new</span> System.NotSupportedException(<span class="stringliteral">&quot;ParallelReader does not support this method.&quot;</span>); }</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// for testing</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#af6541a37f9006eea0e9bee519a101a2f"> 500</a></span>&#160; <span class="keyword">public</span> <span class="comment">/*internal*/</span> <span class="keyword">virtual</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a>[] GetSubReaders()</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> readers.ToArray();</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">override</span> <span class="keywordtype">void</span> DoCommit(IDictionary&lt;string, string&gt; commitUserData)</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; {</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">foreach</span>(var reader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a8955a08bb1c30bbd1630945ee94556bf" title="Commit changes resulting from delete, undeleteAll, or setNorm operations">Commit</a>(commitUserData);</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">override</span> <span class="keywordtype">void</span> DoClose()</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; lock (<span class="keyword">this</span>)</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; readers.Count; i++)</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span> (decrefOnClose[i])</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; readers[i].DecRef();</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; readers[i].Close();</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; Lucene.Net.Search.FieldCache_Fields.DEFAULT.Purge(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div>
<div class="line"><a name="l00531"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html#af82f3a3cd565a1e95e2ce87481df3615"> 531</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> System.Collections.Generic.ICollection&lt;<span class="keywordtype">string</span>&gt; GetFieldNames(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a>.FieldOption fieldNames)</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; EnsureOpen();</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; ISet&lt;string&gt; fieldSet = Lucene.Net.Support.Compatibility.SetFactory.CreateHashSet&lt;<span class="keywordtype">string</span>&gt;();</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">foreach</span>(var reader <span class="keywordflow">in</span> readers)</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; ICollection&lt;string&gt; names = reader.GetFieldNames(fieldNames);</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; fieldSet.UnionWith(names);</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> fieldSet;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">private</span> <span class="keyword">class </span>ParallelTermEnum : <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term_enum.html" title="Abstract class for enumerating terms. Term enumerations are always ordered by Term.compareTo(). Each term in the enumeration is greater than all that precede it. ">TermEnum</a></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">private</span> <span class="keywordtype">void</span> InitBlock(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_parallel_reader.html" title="An IndexReader which reads multiple, parallel indexes. Each index added must have the same number of ...">ParallelReader</a> enclosingInstance)</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; this.enclosingInstance = enclosingInstance;</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keyword">private</span> ParallelReader enclosingInstance;</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keyword">public</span> ParallelReader Enclosing_Instance</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">return</span> enclosingInstance;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; </div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">private</span> System.String field;</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">private</span> IEnumerator&lt;string&gt; fieldIterator;</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">private</span> <a class="code" href="_field_cache_impl_8cs.html#a9ad914d1fb876bdbb16a70f17895b145">TermEnum</a> termEnum;</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">private</span> <span class="keywordtype">bool</span> isDisposed;</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">public</span> ParallelTermEnum(ParallelReader enclosingInstance)</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; field = Enclosing_Instance.fieldToReader.Keys.First();</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">catch</span> (ArgumentOutOfRangeException)</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">// No fields, so keep field == null, termEnum == null</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> (field != null)</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; termEnum = Enclosing_Instance.fieldToReader[field].Terms();</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">public</span> ParallelTermEnum(ParallelReader enclosingInstance, <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term)</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; field = term.Field;</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader = Enclosing_Instance.fieldToReader[field];</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (reader != null)</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; termEnum = reader.Terms(term);</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; </div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> Next()</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (termEnum == null)</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// another term in this field?</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">if</span> (termEnum.Next() &amp;&amp; (System.Object) termEnum.Term.Field == (System.Object) field)</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// yes, keep going</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; </div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; termEnum.Close(); <span class="comment">// close old termEnum</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// find the next field with terms, if any</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (fieldIterator == null)</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; var newList = <span class="keyword">new</span> List&lt;string&gt;(); </div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (Enclosing_Instance.fieldToReader != null &amp;&amp; Enclosing_Instance.fieldToReader.Count &gt; 0)</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; var comparer = Enclosing_Instance.fieldToReader.Comparer;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">foreach</span>(var entry <span class="keywordflow">in</span> Enclosing_Instance.fieldToReader.Keys.Where(x =&gt; comparer.Compare(x, field) &gt;= 0))</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; newList.Add(entry);</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; fieldIterator = newList.Skip(1).GetEnumerator(); <span class="comment">// Skip field to get next one</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">while</span> (fieldIterator.MoveNext())</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; field = fieldIterator.Current;</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; termEnum = Enclosing_Instance.fieldToReader[field].Terms(<span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a>(field));</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term = termEnum.Term;</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> (term != null &amp;&amp; (System.Object) term.Field == (System.Object) field)</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; termEnum.Close();</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// no more fields</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; {</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span> (termEnum == null)</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">return</span> null;</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">return</span> termEnum.Term;</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> DocFreq()</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (termEnum == null)</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; </div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> termEnum.DocFreq();</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">protected</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Dispose(<span class="keywordtype">bool</span> disposing)</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (isDisposed) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">if</span> (disposing)</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">if</span> (termEnum != null)</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; termEnum.Close();</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; isDisposed = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; </div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// wrap a TermDocs in order to support seek(Term)</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keyword">private</span> <span class="keyword">class </span>ParallelTermDocs : <a class="code" href="_field_cache_impl_8cs.html#a058de2d1c801e53325f35357f213391f">TermDocs</a></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">private</span> <span class="keywordtype">void</span> InitBlock(ParallelReader enclosingInstance)</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; this.enclosingInstance = enclosingInstance;</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keyword">private</span> ParallelReader enclosingInstance;</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keyword">public</span> ParallelReader Enclosing_Instance</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; {</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> enclosingInstance;</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <a class="code" href="_field_cache_impl_8cs.html#a058de2d1c801e53325f35357f213391f">TermDocs</a> termDocs;</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keyword">private</span> <span class="keywordtype">bool</span> isDisposed;</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; </div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keyword">public</span> ParallelTermDocs(ParallelReader enclosingInstance)</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keyword">public</span> ParallelTermDocs(ParallelReader enclosingInstance, <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term)</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; {</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span>(term == null)</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; termDocs = (Enclosing_Instance.readers.Count == 0)</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; ? null</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; : Enclosing_Instance.readers[0].TermDocs(null);</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; Seek(term);</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">int</span> Doc</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; {</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> termDocs.Doc; }</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">int</span> Freq</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> termDocs.Freq; }</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Seek(<a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term)</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader = Enclosing_Instance.fieldToReader[term.Field];</div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; termDocs = reader != null?reader.TermDocs(term):null;</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; </div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Seek(<a class="code" href="_field_cache_impl_8cs.html#a9ad914d1fb876bdbb16a70f17895b145">TermEnum</a> termEnum)</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Seek(termEnum.Term);</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; </div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Next()</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (termDocs == null)</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; </div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> termDocs.Next();</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; </div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">int</span> Read(<span class="keywordtype">int</span>[] docs, <span class="keywordtype">int</span>[] freqs)</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">if</span> (termDocs == null)</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; </div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">return</span> termDocs.Read(docs, freqs);</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; </div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SkipTo(<span class="keywordtype">int</span> target)</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (termDocs == null)</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; </div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">return</span> termDocs.SkipTo(target);</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; [Obsolete(<span class="stringliteral">&quot;Use Dispose() instead&quot;</span>)]</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Close()</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; Dispose();</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keyword">public</span> <span class="keywordtype">void</span> Dispose()</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; Dispose(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">protected</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Dispose(<span class="keywordtype">bool</span> disposing)</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">if</span> (isDisposed) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (disposing)</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (termDocs != null)</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; termDocs.Close();</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; isDisposed = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; </div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keyword">private</span> <span class="keyword">class </span>ParallelTermPositions:ParallelTermDocs, <a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a></div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keyword">private</span> <span class="keywordtype">void</span> InitBlock(ParallelReader enclosingInstance)</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; this.enclosingInstance = enclosingInstance;</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keyword">private</span> ParallelReader enclosingInstance;</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keyword">public</span> <span class="keyword">new</span> ParallelReader Enclosing_Instance</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; {</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> enclosingInstance;</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; </div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; </div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keyword">public</span> ParallelTermPositions(ParallelReader enclosingInstance):base(enclosingInstance)</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keyword">public</span> ParallelTermPositions(ParallelReader enclosingInstance, <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term):base(enclosingInstance)</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; {</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; Seek(term);</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; </div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Seek(<a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term)</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader = Enclosing_Instance.fieldToReader[term.Field];</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; termDocs = reader != null?reader.TermPositions(term):null;</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; </div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">int</span> NextPosition()</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; {</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="comment">// It is an error to call this if there is no next position, e.g. if termDocs==null</span></div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">return</span> ((<a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a>) termDocs).NextPosition();</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">int</span> PayloadLength</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; {</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> ((<a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a>) termDocs).PayloadLength; }</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> byte[] GetPayload(byte[] data, <span class="keywordtype">int</span> offset)</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> ((<a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a>) termDocs).GetPayload(data, offset);</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; </div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; </div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// TODO: Remove warning after API has been finalized</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsPayloadAvailable</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; {</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> ((<a class="code" href="core_2_analysis_2_token_8cs.html#a17a77b770c87cb0e7153982c4171bfcc">TermPositions</a>) termDocs).IsPayloadAvailable; }</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; }</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 3 2013 02:12:45 for Lucene.Net by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3
</small></address>
</body>
</html>