| <!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/Search/FieldComparator.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 |
|  <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 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 List</span></a></li> |
| <li><a href="globals.html"><span>File 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </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_56f9b3c34a852b92179da152ee78b823.html">Search</a></li> </ul> |
| </div> |
| </div><!-- top --> |
| <div class="header"> |
| <div class="headertitle"> |
| <div class="title">FieldComparator.cs</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| <a href="_field_comparator_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> <span class="comment">/* </span></div> |
| <div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <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> <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> <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> <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> <span class="comment"> * (the "License"); you may not use this file except in compliance with</span></div> |
| <div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <span class="comment"> * </span></div> |
| <div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <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> <span class="comment"> * </span></div> |
| <div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <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> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div> |
| <div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <span class="comment"> * limitations under the License.</span></div> |
| <div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div> |
| <div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div> |
| <div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">using</span> System;</div> |
| <div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">using</span> Lucene.Net.Support;</div> |
| <div class="line"><a name="l00020"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#a2a6914ea10bbe06764856e29e5674e66"> 20</a></span> <span class="keyword">using</span> <a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> = Lucene.Net.Index.IndexReader;</div> |
| <div class="line"><a name="l00021"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#a10132f5cf1b36eba1cfd6cac4bb602ad"> 21</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#a10132f5cf1b36eba1cfd6cac4bb602ad">ByteParser</a> = Lucene.Net.Search.ByteParser;</div> |
| <div class="line"><a name="l00022"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#a80803eed3873b17afe689125a0514cb8"> 22</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#a80803eed3873b17afe689125a0514cb8">DoubleParser</a> = Lucene.Net.Search.DoubleParser;</div> |
| <div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#aee0c578450466b9d5cba8085fb4e631f"> 23</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#aee0c578450466b9d5cba8085fb4e631f">FloatParser</a> = Lucene.Net.Search.FloatParser;</div> |
| <div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#abeed38d9369fce440c5dab1c5724986f"> 24</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#abeed38d9369fce440c5dab1c5724986f">IntParser</a> = Lucene.Net.Search.IntParser;</div> |
| <div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#a1baa3905cc0b21cd7756bf0d15262dfc"> 25</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#a1baa3905cc0b21cd7756bf0d15262dfc">LongParser</a> = Lucene.Net.Search.LongParser;</div> |
| <div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#af831b2e5747d449880b40a41ce915388"> 26</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#af831b2e5747d449880b40a41ce915388">ShortParser</a> = Lucene.Net.Search.ShortParser;</div> |
| <div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="_field_comparator_8cs.html#a737d7f01590bbacd2633e2c39d004c44"> 27</a></span> <span class="keyword">using</span> <a class="code" href="_field_comparator_8cs.html#a737d7f01590bbacd2633e2c39d004c44">StringIndex</a> = Lucene.Net.Search.StringIndex;</div> |
| <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div> |
| <div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span>Lucene.Net.Search</div> |
| <div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div> |
| <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div> |
| <div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html"> 83</a></span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div> |
| <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keywordtype">int</span> <a class="code" href="class_lucene_1_1_net_1_1_support_1_1_compare.html" title="Summary description for TestSupportClass. ">Compare</a>(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2);</div> |
| <div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div> |
| <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> slot);</div> |
| <div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> |
| <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc);</div> |
| <div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div> |
| <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc);</div> |
| <div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div> |
| <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase);</div> |
| <div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div> |
| <div class="line"><a name="l00158"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html#abbd2eabb8ea3e83e39ab8af0945abd3a"> 158</a></span>  <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetScorer(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_scorer.html" title="Expert: Common scoring functionality for different types of queries.">Scorer</a> scorer)</div> |
| <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div> |
| <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// Empty implementation since most comparators don't need the score. This</span></div> |
| <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// can be overridden by those that need it.</span></div> |
| <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div> |
| <div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div> |
| <div class="line"><a name="l00171"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html#a5f851ad6bc6a5cdf83ff60c1682ea06f"> 171</a></span>  <span class="keyword">public</span> <span class="keyword">abstract</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot] { <span class="keyword">get</span>; }</div> |
| <div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div> |
| <div class="line"><a name="l00176"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html"> 176</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html" title="Parses field's values as byte (using FieldCache.GetBytes(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">ByteComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div> |
| <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">private</span> sbyte[] values;</div> |
| <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">private</span> sbyte[] currentReaderValues;</div> |
| <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">private</span> <a class="code" href="interface_lucene_1_1_net_1_1_search_1_1_byte_parser.html" title="Interface to parse bytes from document fields.">ByteParser</a> parser;</div> |
| <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">private</span> sbyte bottom;</div> |
| <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div> |
| <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html" title="Parses field's values as byte (using FieldCache.GetBytes(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">ByteComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, Lucene.Net.Search.Parser parser)</div> |
| <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div> |
| <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  values = <span class="keyword">new</span> sbyte[numHits];</div> |
| <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  this.field = field;</div> |
| <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  this.parser = (<a class="code" href="_field_comparator_8cs.html#a10132f5cf1b36eba1cfd6cac4bb602ad">ByteParser</a>) parser;</div> |
| <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div> |
| <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div> |
| <div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html#ad3d124e05592337c4eeb7cacccfaa080"> 191</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div> |
| <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> values[slot1] - values[slot2];</div> |
| <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div> |
| <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div> |
| <div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html#ac4514b054e6330c957b63a7c3853adf2"> 196</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div> |
| <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> bottom - currentReaderValues[doc];</div> |
| <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div> |
| <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div> |
| <div class="line"><a name="l00201"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html#af26cb27ad1674b5d8f6ce28fefd4ced2"> 201</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div> |
| <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div> |
| <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  </div> |
| <div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html#a0e6374bb87c867626de2d50a192b7aeb"> 206</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div> |
| <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetBytes(reader, field, parser);</div> |
| <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div> |
| <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  </div> |
| <div class="line"><a name="l00211"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html#adf98ba57f35a666f51cb7f789c7877a1"> 211</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div> |
| <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div> |
| <div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div> |
| <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00217"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_byte_comparator.html#a1c67f41566957793d2cf3bc9312be603"> 217</a></span>  {</div> |
| <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (sbyte) values[slot]; }</div> |
| <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div> |
| <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div> |
| <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div> |
| <div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html"> 223</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html" title="Sorts by ascending docID ">DocComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div> |
| <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">private</span> <span class="keywordtype">int</span>[] docIDs;</div> |
| <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> docBase;</div> |
| <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> bottom;</div> |
| <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  </div> |
| <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html" title="Sorts by ascending docID ">DocComparator</a>(<span class="keywordtype">int</span> numHits)</div> |
| <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div> |
| <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  docIDs = <span class="keyword">new</span> <span class="keywordtype">int</span>[numHits];</div> |
| <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div> |
| <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  </div> |
| <div class="line"><a name="l00234"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html#aa610359dd1a3dfb15a2d82b724e23f25"> 234</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div> |
| <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// No overflow risk because docIDs are non-negative</span></div> |
| <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">return</span> docIDs[slot1] - docIDs[slot2];</div> |
| <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div> |
| <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  </div> |
| <div class="line"><a name="l00240"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html#a90f8ac2eebf1bf52701c752eb035f2dd"> 240</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div> |
| <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// No overflow risk because docIDs are non-negative</span></div> |
| <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> bottom - (docBase + doc);</div> |
| <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div> |
| <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  </div> |
| <div class="line"><a name="l00246"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html#a5be6211fe5bc6ae4491dba7df2ac7348"> 246</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div> |
| <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  docIDs[slot] = docBase + doc;</div> |
| <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div> |
| <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  </div> |
| <div class="line"><a name="l00251"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html#a9cc3555cf6b9474b8dcef7481c2f2b9f"> 251</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div> |
| <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// TODO: can we "map" our docIDs to the current</span></div> |
| <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// reader? saves having to then subtract on every</span></div> |
| <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// compare call</span></div> |
| <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  this.docBase = docBase;</div> |
| <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div> |
| <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  </div> |
| <div class="line"><a name="l00259"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html#aff7a47f0f430a862a59032d646a857c1"> 259</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div> |
| <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  this.bottom = docIDs[bottom];</div> |
| <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div> |
| <div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div> |
| <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00265"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_doc_comparator.html#a61d2644ec6acde6b7fbb3e3d2f8f194e"> 265</a></span>  {</div> |
| <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (System.Int32) docIDs[slot]; }</div> |
| <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div> |
| <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div> |
| <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div> |
| <div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html"> 273</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html" title="Parses field's values as double (using FieldCache.GetDoubles(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">DoubleComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  {</div> |
| <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">private</span> <span class="keywordtype">double</span>[] values;</div> |
| <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">private</span> <span class="keywordtype">double</span>[] currentReaderValues;</div> |
| <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">private</span> <a class="code" href="interface_lucene_1_1_net_1_1_search_1_1_double_parser.html" title="Interface to parse doubles from document fields.">DoubleParser</a> parser;</div> |
| <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">private</span> <span class="keywordtype">double</span> bottom;</div> |
| <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  </div> |
| <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html" title="Parses field's values as double (using FieldCache.GetDoubles(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">DoubleComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, Lucene.Net.Search.Parser parser)</div> |
| <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div> |
| <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  values = <span class="keyword">new</span> <span class="keywordtype">double</span>[numHits];</div> |
| <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  this.field = field;</div> |
| <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  this.parser = (<a class="code" href="_field_comparator_8cs.html#a80803eed3873b17afe689125a0514cb8">DoubleParser</a>) parser;</div> |
| <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div> |
| <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  </div> |
| <div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html#aca3d728469a21e1eed3f3d29d7bc9527"> 288</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div> |
| <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordtype">double</span> v1 = values[slot1];</div> |
| <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordtype">double</span> v2 = values[slot2];</div> |
| <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span> (v1 > v2)</div> |
| <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div> |
| <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div> |
| <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1 < v2)</div> |
| <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div> |
| <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div> |
| <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div> |
| <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div> |
| <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div> |
| <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div> |
| <div class="line"><a name="l00306"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html#af19872763c0f95f8cdb229b5dbce764f"> 306</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div> |
| <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordtype">double</span> v2 = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span> (bottom > v2)</div> |
| <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div> |
| <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div> |
| <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bottom < v2)</div> |
| <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div> |
| <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div> |
| <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div> |
| <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div> |
| <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div> |
| <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div> |
| <div class="line"><a name="l00323"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html#a111dfc3f1d71745cb3fcf3355e4d8749"> 323</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div> |
| <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div> |
| <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  </div> |
| <div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html#a342401893114d19d55c31d771ed6517b"> 328</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div> |
| <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetDoubles(reader, field, parser);</div> |
| <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div> |
| <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div> |
| <div class="line"><a name="l00333"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html#ac5b4e84604dfbbb08bcf4ef01a4b85be"> 333</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div> |
| <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div> |
| <div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div> |
| <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00339"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_double_comparator.html#a9ed8d5e8b93f17847fd42874fa8dd308"> 339</a></span>  {</div> |
| <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (<span class="keywordtype">double</span>) values[slot]; }</div> |
| <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div> |
| <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div> |
| <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  </div> |
| <div class="line"><a name="l00347"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html"> 347</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html" title="Parses field's values as float (using FieldCache.GetFloats(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">FloatComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div> |
| <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">private</span> <span class="keywordtype">float</span>[] values;</div> |
| <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">private</span> <span class="keywordtype">float</span>[] currentReaderValues;</div> |
| <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">private</span> <a class="code" href="interface_lucene_1_1_net_1_1_search_1_1_float_parser.html" title="Interface to parse floats from document fields.">FloatParser</a> parser;</div> |
| <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">private</span> <span class="keywordtype">float</span> bottom;</div> |
| <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  </div> |
| <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html" title="Parses field's values as float (using FieldCache.GetFloats(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">FloatComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, Lucene.Net.Search.Parser parser)</div> |
| <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  {</div> |
| <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  values = <span class="keyword">new</span> <span class="keywordtype">float</span>[numHits];</div> |
| <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  this.field = field;</div> |
| <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  this.parser = (<a class="code" href="_field_comparator_8cs.html#aee0c578450466b9d5cba8085fb4e631f">FloatParser</a>) parser;</div> |
| <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div> |
| <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  </div> |
| <div class="line"><a name="l00362"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html#ae56ce22c3fd6c86ce231a1153b26964e"> 362</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div> |
| <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// TODO: are there sneaky non-branch ways to compute</span></div> |
| <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// sign of float?</span></div> |
| <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">float</span> v1 = values[slot1];</div> |
| <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordtype">float</span> v2 = values[slot2];</div> |
| <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span> (v1 > v2)</div> |
| <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div> |
| <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div> |
| <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1 < v2)</div> |
| <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div> |
| <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div> |
| <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div> |
| <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div> |
| <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div> |
| <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  </div> |
| <div class="line"><a name="l00382"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html#afc759c1dae3a1c3a838c92bb54c41a15"> 382</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  {</div> |
| <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// TODO: are there sneaky non-branch ways to compute</span></div> |
| <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">// sign of float?</span></div> |
| <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordtype">float</span> v2 = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">if</span> (bottom > v2)</div> |
| <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div> |
| <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div> |
| <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bottom < v2)</div> |
| <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div> |
| <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div> |
| <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div> |
| <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div> |
| <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div> |
| <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div> |
| <div class="line"><a name="l00401"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html#af95b7d6ed4a7db62b9e303e920026650"> 401</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div> |
| <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div> |
| <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  </div> |
| <div class="line"><a name="l00406"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html#ab3b70e243ec330ad157bfcc5c24d39a9"> 406</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div> |
| <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetFloats(reader, field, parser);</div> |
| <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div> |
| <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  </div> |
| <div class="line"><a name="l00411"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html#aec987add62ce77e3c6507cf2a18720d9"> 411</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div> |
| <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div> |
| <div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div> |
| <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00417"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_float_comparator.html#a00faa4250a94d01f0d438a2728abe60c"> 417</a></span>  {</div> |
| <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (<span class="keywordtype">float</span>) values[slot]; }</div> |
| <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div> |
| <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div> |
| <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  </div> |
| <div class="line"><a name="l00425"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html"> 425</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html" title="Parses field's values as int (using FieldCache.GetInts(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">IntComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div> |
| <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">private</span> <span class="keywordtype">int</span>[] values;</div> |
| <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">private</span> <span class="keywordtype">int</span>[] currentReaderValues;</div> |
| <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">private</span> <a class="code" href="interface_lucene_1_1_net_1_1_search_1_1_int_parser.html" title="Interface to parse ints from document fields.">IntParser</a> parser;</div> |
| <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> bottom; <span class="comment">// Value of bottom of queue</span></div> |
| <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  </div> |
| <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html" title="Parses field's values as int (using FieldCache.GetInts(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">IntComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, Lucene.Net.Search.Parser parser)</div> |
| <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  {</div> |
| <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  values = <span class="keyword">new</span> <span class="keywordtype">int</span>[numHits];</div> |
| <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  this.field = field;</div> |
| <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  this.parser = (<a class="code" href="_field_comparator_8cs.html#abeed38d9369fce440c5dab1c5724986f">IntParser</a>) parser;</div> |
| <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div> |
| <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  </div> |
| <div class="line"><a name="l00440"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html#aefea2767ffe518b0f7bb919d8cf72f02"> 440</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div> |
| <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// TODO: there are sneaky non-branch ways to compute</span></div> |
| <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="comment">// -1/+1/0 sign</span></div> |
| <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// Cannot return values[slot1] - values[slot2] because that</span></div> |
| <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// may overflow</span></div> |
| <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordtype">int</span> v1 = values[slot1];</div> |
| <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">int</span> v2 = values[slot2];</div> |
| <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (v1 > v2)</div> |
| <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div> |
| <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div> |
| <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1 < v2)</div> |
| <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div> |
| <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div> |
| <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  {</div> |
| <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div> |
| <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div> |
| <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  </div> |
| <div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html#acff353834704eb15e68bd97c506ab80d"> 462</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  {</div> |
| <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// TODO: there are sneaky non-branch ways to compute</span></div> |
| <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// -1/+1/0 sign</span></div> |
| <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="comment">// Cannot return bottom - values[slot2] because that</span></div> |
| <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// may overflow</span></div> |
| <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">int</span> v2 = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span> (bottom > v2)</div> |
| <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div> |
| <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div> |
| <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bottom < v2)</div> |
| <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {</div> |
| <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div> |
| <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div> |
| <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div> |
| <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div> |
| <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  </div> |
| <div class="line"><a name="l00483"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html#a19fa31db60f9ec641c603d38eae886e8"> 483</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div> |
| <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div> |
| <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  </div> |
| <div class="line"><a name="l00488"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html#a7ec19d89a28b1b9d3269e2fc34e5e511"> 488</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div> |
| <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetInts(reader, field, parser);</div> |
| <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div> |
| <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  </div> |
| <div class="line"><a name="l00493"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html#a7ca9bb195c07c55fb14a31a5e4e6a6fd"> 493</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div> |
| <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div> |
| <div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div> |
| <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00499"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_int_comparator.html#a39afa1e867884cec49d2ec4eaa559d5f"> 499</a></span>  {</div> |
| <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (System.Int32) values[slot]; }</div> |
| <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div> |
| <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div> |
| <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  </div> |
| <div class="line"><a name="l00507"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html"> 507</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html" title="Parses field's values as long (using FieldCache.GetLongs(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">LongComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div> |
| <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keyword">private</span> <span class="keywordtype">long</span>[] values;</div> |
| <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">private</span> <span class="keywordtype">long</span>[] currentReaderValues;</div> |
| <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keyword">private</span> <a class="code" href="interface_lucene_1_1_net_1_1_search_1_1_long_parser.html" title="Interface to parse long from document fields.">LongParser</a> parser;</div> |
| <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">private</span> <span class="keywordtype">long</span> bottom;</div> |
| <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  </div> |
| <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html" title="Parses field's values as long (using FieldCache.GetLongs(Lucene.Net.Index.IndexReader,string) and sorts by ascending value ">LongComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, Lucene.Net.Search.Parser parser)</div> |
| <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  {</div> |
| <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  values = <span class="keyword">new</span> <span class="keywordtype">long</span>[numHits];</div> |
| <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  this.field = field;</div> |
| <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  this.parser = (<a class="code" href="_field_comparator_8cs.html#a1baa3905cc0b21cd7756bf0d15262dfc">LongParser</a>) parser;</div> |
| <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div> |
| <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  </div> |
| <div class="line"><a name="l00522"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html#a401669c071faba41beb560addad31815"> 522</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  {</div> |
| <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// TODO: there are sneaky non-branch ways to compute</span></div> |
| <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// -1/+1/0 sign</span></div> |
| <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordtype">long</span> v1 = values[slot1];</div> |
| <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordtype">long</span> v2 = values[slot2];</div> |
| <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">if</span> (v1 > v2)</div> |
| <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  {</div> |
| <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div> |
| <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1 < v2)</div> |
| <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div> |
| <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div> |
| <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  {</div> |
| <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div> |
| <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div> |
| <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  </div> |
| <div class="line"><a name="l00542"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html#abef58a4a189f62bf5f4d1e2c8c0d03a5"> 542</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  {</div> |
| <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// TODO: there are sneaky non-branch ways to compute</span></div> |
| <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">// -1/+1/0 sign</span></div> |
| <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordtype">long</span> v2 = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">if</span> (bottom > v2)</div> |
| <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  {</div> |
| <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  }</div> |
| <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bottom < v2)</div> |
| <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  {</div> |
| <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div> |
| <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  {</div> |
| <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div> |
| <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div> |
| <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  </div> |
| <div class="line"><a name="l00561"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html#a529eacf29b85640f41032958ef7d1079"> 561</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  {</div> |
| <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div> |
| <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  </div> |
| <div class="line"><a name="l00566"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html#ac1acb25b843d4d3e6a77e0d9d8994500"> 566</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  {</div> |
| <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetLongs(reader, field, parser);</div> |
| <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div> |
| <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  </div> |
| <div class="line"><a name="l00571"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html#a70c8e94fc698fe60a8a81e2fa5f6b3a8"> 571</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div> |
| <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div> |
| <div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div> |
| <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00577"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_long_comparator.html#a8755f74c69007fb7dd4ceebb996a67ad"> 577</a></span>  {</div> |
| <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (<span class="keywordtype">long</span>) values[slot]; }</div> |
| <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  }</div> |
| <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div> |
| <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  </div> |
| <div class="line"><a name="l00589"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html"> 589</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html" title="Sorts by descending relevance. NOTE: if you are sorting only by descending relevance and then seconda...">RelevanceComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  {</div> |
| <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keyword">private</span> <span class="keywordtype">float</span>[] scores;</div> |
| <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keyword">private</span> <span class="keywordtype">float</span> bottom;</div> |
| <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keyword">private</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_scorer.html" title="Expert: Common scoring functionality for different types of queries.">Scorer</a> scorer;</div> |
| <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  </div> |
| <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html" title="Sorts by descending relevance. NOTE: if you are sorting only by descending relevance and then seconda...">RelevanceComparator</a>(<span class="keywordtype">int</span> numHits)</div> |
| <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  {</div> |
| <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  scores = <span class="keyword">new</span> <span class="keywordtype">float</span>[numHits];</div> |
| <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div> |
| <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  </div> |
| <div class="line"><a name="l00600"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#ae4d9d19ef9c5164cd9c8cebbe4ffa287"> 600</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div> |
| <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordtype">float</span> score1 = scores[slot1];</div> |
| <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordtype">float</span> score2 = scores[slot2];</div> |
| <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">return</span> score1 > score2?- 1:(score1 < score2?1:0);</div> |
| <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div> |
| <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  </div> |
| <div class="line"><a name="l00607"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#a5d40479c2eead00b0daf43853552875a"> 607</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  {</div> |
| <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordtype">float</span> score = scorer.Score();</div> |
| <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">return</span> bottom > score?- 1:(bottom < score?1:0);</div> |
| <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  }</div> |
| <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  </div> |
| <div class="line"><a name="l00613"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#a3f5bced3a3c4345192da2f29d75b1387"> 613</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  {</div> |
| <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  scores[slot] = scorer.Score();</div> |
| <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  }</div> |
| <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  </div> |
| <div class="line"><a name="l00618"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#a26420b79f6155881207a2672f78b0986"> 618</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  {</div> |
| <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  }</div> |
| <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  </div> |
| <div class="line"><a name="l00622"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#acdacbc78cc3cb4d5606f32e326ac72a9"> 622</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div> |
| <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  this.bottom = scores[bottom];</div> |
| <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  }</div> |
| <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  </div> |
| <div class="line"><a name="l00627"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#af9debfd79dea19664c82d28fcfebb7ed"> 627</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetScorer(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_scorer.html" title="Expert: Common scoring functionality for different types of queries.">Scorer</a> scorer)</div> |
| <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  {</div> |
| <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="comment">// wrap with a ScoreCachingWrappingScorer so that successive calls to</span></div> |
| <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="comment">// score() will not incur score computation over and over again.</span></div> |
| <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  this.scorer = <span class="keyword">new</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_score_caching_wrapping_scorer.html" title="A Scorer which wraps another scorer and caches the score of the current document. Successive calls to...">ScoreCachingWrappingScorer</a>(scorer);</div> |
| <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div> |
| <div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div> |
| <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00635"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_relevance_comparator.html#a4fb257e8ef07eac1fe0f29cc7b251e92"> 635</a></span>  {</div> |
| <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (<span class="keywordtype">float</span>) scores[slot]; }</div> |
| <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div> |
| <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div> |
| <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  </div> |
| <div class="line"><a name="l00643"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html"> 643</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html" title="Parses field's values as short (using FieldCache.GetShorts(IndexReader, string)) and sorts by ascendi...">ShortComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  {</div> |
| <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keyword">private</span> <span class="keywordtype">short</span>[] values;</div> |
| <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keyword">private</span> <span class="keywordtype">short</span>[] currentReaderValues;</div> |
| <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keyword">private</span> <a class="code" href="interface_lucene_1_1_net_1_1_search_1_1_short_parser.html" title="Interface to parse shorts from document fields.">ShortParser</a> parser;</div> |
| <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keyword">private</span> <span class="keywordtype">short</span> bottom;</div> |
| <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  </div> |
| <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html" title="Parses field's values as short (using FieldCache.GetShorts(IndexReader, string)) and sorts by ascendi...">ShortComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, Lucene.Net.Search.Parser parser)</div> |
| <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  {</div> |
| <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  values = <span class="keyword">new</span> <span class="keywordtype">short</span>[numHits];</div> |
| <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  this.field = field;</div> |
| <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  this.parser = (<a class="code" href="_field_comparator_8cs.html#af831b2e5747d449880b40a41ce915388">ShortParser</a>) parser;</div> |
| <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div> |
| <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  </div> |
| <div class="line"><a name="l00658"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html#a49048c01c14031625c55c69145e60728"> 658</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  {</div> |
| <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">return</span> values[slot1] - values[slot2];</div> |
| <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  }</div> |
| <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  </div> |
| <div class="line"><a name="l00663"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html#ae66990c49e7ba24470d063683d9b779e"> 663</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div> |
| <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">return</span> bottom - currentReaderValues[doc];</div> |
| <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  }</div> |
| <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  </div> |
| <div class="line"><a name="l00668"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html#a0c00349da5821305f90b7dd6ec2bad26"> 668</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  {</div> |
| <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div> |
| <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  </div> |
| <div class="line"><a name="l00673"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html#a7592353b2df36d40c7313cd8dae82ac6"> 673</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  {</div> |
| <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetShorts(reader, field, parser);</div> |
| <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  }</div> |
| <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  </div> |
| <div class="line"><a name="l00678"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html#a40fc3d72bf602ea777d1e700c234570d"> 678</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  {</div> |
| <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  }</div> |
| <div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div> |
| <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00684"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_short_comparator.html#aebd807439e0c92cee244c15183ccc50c"> 684</a></span>  {</div> |
| <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> (<span class="keywordtype">short</span>) values[slot]; }</div> |
| <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div> |
| <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div> |
| <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  </div> |
| <div class="line"><a name="l00692"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html"> 692</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html" title="Sorts by a field's value using the Collator for a given Locale. ">StringComparatorLocale</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div> |
| <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  </div> |
| <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keyword">private</span> System.String[] values;</div> |
| <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keyword">private</span> System.String[] currentReaderValues;</div> |
| <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keyword">internal</span> System.Globalization.CompareInfo collator;</div> |
| <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keyword">private</span> System.String bottom;</div> |
| <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  </div> |
| <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html" title="Sorts by a field's value using the Collator for a given Locale. ">StringComparatorLocale</a>(<span class="keywordtype">int</span> numHits, System.String field, System.Globalization.CultureInfo locale)</div> |
| <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div> |
| <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  values = <span class="keyword">new</span> System.String[numHits];</div> |
| <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  this.field = field;</div> |
| <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  collator = locale.CompareInfo;</div> |
| <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div> |
| <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  </div> |
| <div class="line"><a name="l00708"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#a2eb8f6e6a10dfc67513fb19a036fbe57"> 708</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div> |
| <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  System.String val1 = values[slot1];</div> |
| <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  System.String val2 = values[slot2];</div> |
| <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">if</span> (val1 == null)</div> |
| <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  {</div> |
| <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  {</div> |
| <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  }</div> |
| <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div> |
| <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  {</div> |
| <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div> |
| <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> collator.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#a2eb8f6e6a10dfc67513fb19a036fbe57" title="Compare hit at slot1 with hit at slot2.">Compare</a>(val1.ToString(), val2.ToString());</div> |
| <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div> |
| <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  </div> |
| <div class="line"><a name="l00727"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#a4241925244c1e0dd0aef0d2561e86cab"> 727</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  {</div> |
| <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  System.String val2 = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">if</span> (bottom == null)</div> |
| <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  {</div> |
| <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  {</div> |
| <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  }</div> |
| <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  }</div> |
| <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  {</div> |
| <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  }</div> |
| <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keywordflow">return</span> collator.Compare(bottom.ToString(), val2.ToString());</div> |
| <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div> |
| <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  </div> |
| <div class="line"><a name="l00745"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#a219724275c75d9169bdc3a8b67961b27"> 745</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div> |
| <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div> |
| <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  </div> |
| <div class="line"><a name="l00750"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#a9ed66219e996fde68ce01ba3bb021f68"> 750</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  {</div> |
| <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetStrings(reader, field);</div> |
| <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  }</div> |
| <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  </div> |
| <div class="line"><a name="l00755"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#a4ea626e5bcefd102d220601b091b12cc"> 755</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div> |
| <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div> |
| <div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div> |
| <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00761"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_comparator_locale.html#ac0b7bcce6461b0c0feecd044a46fe98b"> 761</a></span>  {</div> |
| <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> values[slot]; }</div> |
| <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  }</div> |
| <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div> |
| <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  </div> |
| <div class="line"><a name="l00776"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html"> 776</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html" title="Sorts by field's natural String sort order, using ordinals. This is functionally equivalent to FieldC...">StringOrdValComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  {</div> |
| <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  </div> |
| <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keyword">private</span> <span class="keywordtype">int</span>[] ords;</div> |
| <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keyword">private</span> System.String[] values;</div> |
| <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keyword">private</span> <span class="keywordtype">int</span>[] readerGen;</div> |
| <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  </div> |
| <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> currentReaderGen = - 1;</div> |
| <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">private</span> System.String[] lookup;</div> |
| <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keyword">private</span> <span class="keywordtype">int</span>[] order;</div> |
| <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  </div> |
| <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> bottomSlot = - 1;</div> |
| <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> bottomOrd;</div> |
| <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keyword">private</span> System.String bottomValue;</div> |
| <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keyword">private</span> <span class="keywordtype">bool</span> reversed;</div> |
| <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> sortPos;</div> |
| <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  </div> |
| <div class="line"><a name="l00794"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#a0f3f99667580f96504c2681d0f844830"> 794</a></span>  <span class="keyword">public</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html" title="Sorts by field's natural String sort order, using ordinals. This is functionally equivalent to FieldC...">StringOrdValComparator</a>(<span class="keywordtype">int</span> numHits, System.String field, <span class="keywordtype">int</span> sortPos, <span class="keywordtype">bool</span> reversed)</div> |
| <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  {</div> |
| <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  ords = <span class="keyword">new</span> <span class="keywordtype">int</span>[numHits];</div> |
| <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  values = <span class="keyword">new</span> System.String[numHits];</div> |
| <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  readerGen = <span class="keyword">new</span> <span class="keywordtype">int</span>[numHits];</div> |
| <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  this.sortPos = sortPos;</div> |
| <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  this.reversed = reversed;</div> |
| <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  this.field = field;</div> |
| <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div> |
| <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  </div> |
| <div class="line"><a name="l00804"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#a4fc025f2328f3d1397550d26010e630a"> 804</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  {</div> |
| <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span> (readerGen[slot1] == readerGen[slot2])</div> |
| <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  {</div> |
| <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordtype">int</span> cmp = ords[slot1] - ords[slot2];</div> |
| <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">if</span> (cmp != 0)</div> |
| <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  {</div> |
| <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">return</span> cmp;</div> |
| <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  }</div> |
| <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div> |
| <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  </div> |
| <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  System.String val1 = values[slot1];</div> |
| <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  System.String val2 = values[slot2];</div> |
| <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (val1 == null)</div> |
| <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  {</div> |
| <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  {</div> |
| <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  }</div> |
| <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div> |
| <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  {</div> |
| <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  }</div> |
| <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">return</span> String.CompareOrdinal(val1, val2);</div> |
| <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  }</div> |
| <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  </div> |
| <div class="line"><a name="l00832"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#ac2a6874ca5e4e48fa724ca8ba65cfc51"> 832</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div> |
| <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  System.Diagnostics.Debug.Assert(bottomSlot != - 1);</div> |
| <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordtype">int</span> order = this.order[doc];</div> |
| <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordtype">int</span> cmp = bottomOrd - order;</div> |
| <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">if</span> (cmp != 0)</div> |
| <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div> |
| <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">return</span> cmp;</div> |
| <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div> |
| <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  </div> |
| <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  System.String val2 = lookup[order];</div> |
| <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">if</span> (bottomValue == null)</div> |
| <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  {</div> |
| <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div> |
| <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div> |
| <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="comment">// bottom wins</span></div> |
| <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  }</div> |
| <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div> |
| <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="comment">// doc wins</span></div> |
| <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  }</div> |
| <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">return</span> String.CompareOrdinal(bottomValue, val2);</div> |
| <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  }</div> |
| <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  </div> |
| <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keyword">private</span> <span class="keywordtype">void</span> Convert(<span class="keywordtype">int</span> slot)</div> |
| <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  {</div> |
| <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  readerGen[slot] = currentReaderGen;</div> |
| <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordtype">int</span> index = 0;</div> |
| <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  System.String value_Renamed = values[slot];</div> |
| <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">if</span> (value_Renamed == null)</div> |
| <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  {</div> |
| <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  ords[slot] = 0;</div> |
| <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  return ;</div> |
| <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  }</div> |
| <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  </div> |
| <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">if</span> (sortPos == 0 && bottomSlot != - 1 && bottomSlot != slot)</div> |
| <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div> |
| <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">// Since we are the primary sort, the entries in the</span></div> |
| <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="comment">// queue are bounded by bottomOrd:</span></div> |
| <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  System.Diagnostics.Debug.Assert(bottomOrd < lookup.Length);</div> |
| <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span> (reversed)</div> |
| <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  {</div> |
| <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  index = BinarySearch(lookup, value_Renamed, bottomOrd, lookup.Length - 1);</div> |
| <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div> |
| <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  {</div> |
| <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  index = BinarySearch(lookup, value_Renamed, 0, bottomOrd);</div> |
| <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  }</div> |
| <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  }</div> |
| <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  {</div> |
| <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="comment">// Full binary search</span></div> |
| <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  index = BinarySearch(lookup, value_Renamed);</div> |
| <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div> |
| <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  </div> |
| <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">if</span> (index < 0)</div> |
| <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  {</div> |
| <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  index = - index - 2;</div> |
| <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  }</div> |
| <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  ords[slot] = index;</div> |
| <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  }</div> |
| <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  </div> |
| <div class="line"><a name="l00898"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#a0aa0ffb4b523589b9a2d317c2b582532"> 898</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  {</div> |
| <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordtype">int</span> ord = order[doc];</div> |
| <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  ords[slot] = ord;</div> |
| <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  System.Diagnostics.Debug.Assert(ord >= 0);</div> |
| <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  values[slot] = lookup[ord];</div> |
| <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  readerGen[slot] = currentReaderGen;</div> |
| <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  }</div> |
| <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  </div> |
| <div class="line"><a name="l00907"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#a041d4b4eb2f1979b430288154f53b4cf"> 907</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  {</div> |
| <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_string_index.html" title="Expert: Stores term text values and document ordering data. ">StringIndex</a> currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetStringIndex(reader, field);</div> |
| <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  currentReaderGen++;</div> |
| <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  order = currentReaderValues.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_string_index.html#a1b409ff27d4d3e348f30694018ae144e" title="For each document, an index into the lookup array. ">order</a>;</div> |
| <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  lookup = currentReaderValues.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_string_index.html#a3cb3f4491b046bb0c3fb64f1abd5a5c7" title="All the term values, in natural order. ">lookup</a>;</div> |
| <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  System.Diagnostics.Debug.Assert(lookup.Length > 0);</div> |
| <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">if</span> (bottomSlot != - 1)</div> |
| <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  {</div> |
| <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  Convert(bottomSlot);</div> |
| <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  bottomOrd = ords[bottomSlot];</div> |
| <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  }</div> |
| <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  }</div> |
| <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  </div> |
| <div class="line"><a name="l00921"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#aa8ba18ee1077ab3f3471c58a5f4de98a"> 921</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  {</div> |
| <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  bottomSlot = bottom;</div> |
| <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">if</span> (readerGen[bottom] != currentReaderGen)</div> |
| <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  {</div> |
| <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  Convert(bottomSlot);</div> |
| <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</div> |
| <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  bottomOrd = ords[bottom];</div> |
| <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  System.Diagnostics.Debug.Assert(bottomOrd >= 0);</div> |
| <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  System.Diagnostics.Debug.Assert(bottomOrd < lookup.Length);</div> |
| <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  bottomValue = values[bottom];</div> |
| <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  }</div> |
| <div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div> |
| <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l00935"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#ac5effa074416bacb8451e787b4c4db6f"> 935</a></span>  {</div> |
| <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> values[slot]; }</div> |
| <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  }</div> |
| <div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div> |
| <div class="line"><a name="l00939"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#a2b4d0c4add178daad2d43e2bf38fa459"> 939</a></span>  <span class="keyword">public</span> <span class="keywordtype">string</span>[] GetValues()</div> |
| <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  {</div> |
| <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">return</span> values;</div> |
| <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  }</div> |
| <div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div> |
| <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keyword">public</span> <span class="keywordtype">int</span> BottomSlot</div> |
| <div class="line"><a name="l00945"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#a0eefbbb3225ea5598e5bc062229bb2a1"> 945</a></span>  {</div> |
| <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> bottomSlot; }</div> |
| <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  }</div> |
| <div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div> |
| <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keyword">public</span> <span class="keywordtype">string</span> <a class="code" href="_syns2_index_8cs.html#a6d7b175c6799cf1d18e9493727d23fc6">Field</a></div> |
| <div class="line"><a name="l00950"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_ord_val_comparator.html#aface59184f5502cf889c712f96ac6c03"> 950</a></span>  {</div> |
| <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> field; }</div> |
| <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div> |
| <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  }</div> |
| <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  </div> |
| <div class="line"><a name="l00960"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html"> 960</a></span>  <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html" title="Sorts by field's natural String sort order. All comparisons are done using String.compareTo, which is slow for medium to large result sets but possibly very fast for very small results sets. ">StringValComparator</a>:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator.html" title="Expert: a FieldComparator compares hits so as to determine their sort order when collecting the top r...">FieldComparator</a></div> |
| <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  {</div> |
| <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  </div> |
| <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keyword">private</span> System.String[] values;</div> |
| <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keyword">private</span> System.String[] currentReaderValues;</div> |
| <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keyword">private</span> System.String field;</div> |
| <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keyword">private</span> System.String bottom;</div> |
| <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  </div> |
| <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keyword">internal</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html" title="Sorts by field's natural String sort order. All comparisons are done using String.compareTo, which is slow for medium to large result sets but possibly very fast for very small results sets. ">StringValComparator</a>(<span class="keywordtype">int</span> numHits, System.String field)</div> |
| <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  {</div> |
| <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  values = <span class="keyword">new</span> System.String[numHits];</div> |
| <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  this.field = field;</div> |
| <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div> |
| <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  </div> |
| <div class="line"><a name="l00974"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html#a69fe0ca3ca86ec40bcfea0632f9459f2"> 974</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> Compare(<span class="keywordtype">int</span> slot1, <span class="keywordtype">int</span> slot2)</div> |
| <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  {</div> |
| <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  System.String val1 = values[slot1];</div> |
| <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  System.String val2 = values[slot2];</div> |
| <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">if</span> (val1 == null)</div> |
| <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  {</div> |
| <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  {</div> |
| <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div> |
| <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  }</div> |
| <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  {</div> |
| <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div> |
| <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  </div> |
| <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">return</span> String.CompareOrdinal(val1, val2);</div> |
| <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div> |
| <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  </div> |
| <div class="line"><a name="l00994"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html#a532f2f9e0ed1c5ef81135bc6fa1daafe"> 994</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> CompareBottom(<span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  {</div> |
| <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  System.String val2 = currentReaderValues[doc];</div> |
| <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">if</span> (bottom == null)</div> |
| <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  {</div> |
| <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  {</div> |
| <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">return</span> 0;</div> |
| <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  }</div> |
| <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">return</span> - 1;</div> |
| <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div> |
| <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val2 == null)</div> |
| <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div> |
| <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">return</span> 1;</div> |
| <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  }</div> |
| <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">return</span> String.CompareOrdinal(bottom, val2);</div> |
| <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  }</div> |
| <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  </div> |
| <div class="line"><a name="l01012"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html#a13687d5c200e8970348af1bf4ee17bab"> 1012</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Copy(<span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> doc)</div> |
| <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  {</div> |
| <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  values[slot] = currentReaderValues[doc];</div> |
| <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  }</div> |
| <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  </div> |
| <div class="line"><a name="l01017"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html#aaaebafebc3f1289d867da1ff77b652f7"> 1017</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<a class="code" href="_more_like_this_8cs.html#a2a6914ea10bbe06764856e29e5674e66">IndexReader</a> reader, <span class="keywordtype">int</span> docBase)</div> |
| <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  {</div> |
| <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  currentReaderValues = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetStrings(reader, field);</div> |
| <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  }</div> |
| <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  </div> |
| <div class="line"><a name="l01022"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html#a103ed7447c02182085f159d7846458aa"> 1022</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetBottom(<span class="keywordtype">int</span> bottom)</div> |
| <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  {</div> |
| <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  this.bottom = values[bottom];</div> |
| <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  }</div> |
| <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div> |
| <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keyword">public</span> <span class="keyword">override</span> IComparable <span class="keyword">this</span>[<span class="keywordtype">int</span> slot]</div> |
| <div class="line"><a name="l01028"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_field_comparator_1_1_string_val_comparator.html#ac2f9240df036c5257151fe811f37fb24"> 1028</a></span>  {</div> |
| <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keyword">get</span> { <span class="keywordflow">return</span> values[slot]; }</div> |
| <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div> |
| <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  }</div> |
| <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  </div> |
| <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">static</span> <span class="keywordtype">int</span> BinarySearch(System.String[] a, System.String key)</div> |
| <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  {</div> |
| <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keywordflow">return</span> BinarySearch(a, key, 0, a.Length - 1);</div> |
| <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  }</div> |
| <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  </div> |
| <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">static</span> <span class="keywordtype">int</span> BinarySearch(System.String[] a, System.String key, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high)</div> |
| <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  {</div> |
| <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  </div> |
| <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">while</span> (low <= high)</div> |
| <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  {</div> |
| <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="keywordtype">int</span> mid = <a class="code" href="class_lucene_1_1_net_1_1_support_1_1_number.html" title="A simple class for number conversions. ">Number</a>.<a class="code" href="class_lucene_1_1_net_1_1_support_1_1_number.html#aafe44e2acf7feacad6abd2a425730644" title="Performs an unsigned bitwise right shift with the specified number ">URShift</a>((low + high), 1);</div> |
| <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  System.String midVal = a[mid];</div> |
| <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordtype">int</span> cmp;</div> |
| <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">if</span> (midVal != null)</div> |
| <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  {</div> |
| <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  cmp = String.CompareOrdinal(midVal, key);</div> |
| <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  }</div> |
| <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  {</div> |
| <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  cmp = - 1;</div> |
| <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  }</div> |
| <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  </div> |
| <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">if</span> (cmp < 0)</div> |
| <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  low = mid + 1;</div> |
| <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cmp > 0)</div> |
| <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  high = mid - 1;</div> |
| <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">return</span> mid;</div> |
| <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  }</div> |
| <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">return</span> - (low + 1);</div> |
| <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div> |
| <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  }</div> |
| <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> }</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  <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/> |
| </a> 1.8.3 |
| </small></address> |
| </body> |
| </html> |