blob: dbfe0d1e738a22972870c904605ce4076af76373 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3"/>
<title>Lucene.Net: Lucene.Net.Util.NumericUtils Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="lucene-net-icon-128x128.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Lucene.Net
&#160;<span id="projectnumber">3.0.3</span>
</div>
<div id="projectbrief">Lucene.Net is a .NET port of the Java Lucene Indexing Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="Index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Packages</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><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="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Properties</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespace_lucene.html">Lucene</a></li><li class="navelem"><a class="el" href="namespace_lucene_1_1_net.html">Net</a></li><li class="navelem"><a class="el" href="namespace_lucene_1_1_net_1_1_util.html">Util</a></li><li class="navelem"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html">NumericUtils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Lucene.Net.Util.NumericUtils Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This is a helper class to generate prefix-encoded representations for numerical values and supplies converters to represent float/double values as sortable integers/longs.
<a href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_int_range_builder.html">IntRangeBuilder</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Callback for <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#aa6a6b8c10a5ca7b1b2d93071acf0b083" title="Expert: Splits an int range recursively. You may implement a builder that adds clauses to a Lucene...">SplitIntRange</a>. You need to overwrite only one of the methods. &lt;font color="red"&gt;<b>NOTE:</b> This is a very low-level interface, the method signatures may change in later versions.&lt;/font&gt; <a href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_int_range_builder.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_long_range_builder.html">LongRangeBuilder</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Callback for <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#af23993ee55f18cd153a43461f7844f72" title="Expert: Splits a long range recursively. You may implement a builder that adds clauses to a Lucene...">SplitLongRange</a>. You need to overwrite only one of the methods. &lt;font color="red"&gt;<b>NOTE:</b> This is a very low-level interface, the method signatures may change in later versions.&lt;/font&gt; <a href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_long_range_builder.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a80b004ebd3c8be48c4c02ff709ecc043"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a80b004ebd3c8be48c4c02ff709ecc043">LongToPrefixCoded</a> (long val, int shift, char[] buffer)</td></tr>
<tr class="memdesc:a80b004ebd3c8be48c4c02ff709ecc043"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a>. <a href="#a80b004ebd3c8be48c4c02ff709ecc043"></a><br/></td></tr>
<tr class="separator:a80b004ebd3c8be48c4c02ff709ecc043"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c92836fd5266a1681b6d936b6c3862a"><td class="memItemLeft" align="right" valign="top">static System.String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a9c92836fd5266a1681b6d936b6c3862a">LongToPrefixCoded</a> (long val, int shift)</td></tr>
<tr class="memdesc:a9c92836fd5266a1681b6d936b6c3862a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_long_range_builder.html" title="Expert: Callback for SplitLongRange. You need to overwrite only one of the methods. &lt;font color=&quot;red&quot;&gt;NOTE: This is a very low-level interface, the method signatures may change in later versions.&lt;/font&gt; ">LongRangeBuilder</a>. <a href="#a9c92836fd5266a1681b6d936b6c3862a"></a><br/></td></tr>
<tr class="separator:a9c92836fd5266a1681b6d936b6c3862a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5bee9f3e763bb2234b070e8f1c2055c"><td class="memItemLeft" align="right" valign="top">static System.String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#af5bee9f3e763bb2234b070e8f1c2055c">LongToPrefixCoded</a> (long val)</td></tr>
<tr class="memdesc:af5bee9f3e763bb2234b070e8f1c2055c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a convenience method, that returns prefix coded bits of a long without reducing the precision. It can be used to store the full precision value as a stored field in index. To decode, use <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a4bee98b7362bd62472ad7a6b67bb56eb" title="Returns a long from prefixCoded characters. Rightmost bits will be zero for lower precision codes...">PrefixCodedToLong</a>. <a href="#af5bee9f3e763bb2234b070e8f1c2055c"></a><br/></td></tr>
<tr class="separator:af5bee9f3e763bb2234b070e8f1c2055c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83be865f28091660f1c4becd912ef742"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a83be865f28091660f1c4becd912ef742">IntToPrefixCoded</a> (int val, int shift, char[] buffer)</td></tr>
<tr class="memdesc:a83be865f28091660f1c4becd912ef742"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a>. <a href="#a83be865f28091660f1c4becd912ef742"></a><br/></td></tr>
<tr class="separator:a83be865f28091660f1c4becd912ef742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9530f1903f061fc6c8cef0f381e61f3a"><td class="memItemLeft" align="right" valign="top">static System.String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a9530f1903f061fc6c8cef0f381e61f3a">IntToPrefixCoded</a> (int val, int shift)</td></tr>
<tr class="memdesc:a9530f1903f061fc6c8cef0f381e61f3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_int_range_builder.html" title="Expert: Callback for SplitIntRange. You need to overwrite only one of the methods. &lt;font color=&quot;red&quot;&gt;NOTE: This is a very low-level interface, the method signatures may change in later versions.&lt;/font&gt; ">IntRangeBuilder</a>. <a href="#a9530f1903f061fc6c8cef0f381e61f3a"></a><br/></td></tr>
<tr class="separator:a9530f1903f061fc6c8cef0f381e61f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac601c5d2002290970d30bd5e228687cc"><td class="memItemLeft" align="right" valign="top">static System.String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#ac601c5d2002290970d30bd5e228687cc">IntToPrefixCoded</a> (int val)</td></tr>
<tr class="memdesc:ac601c5d2002290970d30bd5e228687cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a convenience method, that returns prefix coded bits of an int without reducing the precision. It can be used to store the full precision value as a stored field in index. To decode, use <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a1be7a9b0cb703121ce1e4fb4ca07037a" title="Returns an int from prefixCoded characters. Rightmost bits will be zero for lower precision codes...">PrefixCodedToInt</a>. <a href="#ac601c5d2002290970d30bd5e228687cc"></a><br/></td></tr>
<tr class="separator:ac601c5d2002290970d30bd5e228687cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bee98b7362bd62472ad7a6b67bb56eb"><td class="memItemLeft" align="right" valign="top">static long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a4bee98b7362bd62472ad7a6b67bb56eb">PrefixCodedToLong</a> (System.String prefixCoded)</td></tr>
<tr class="memdesc:a4bee98b7362bd62472ad7a6b67bb56eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a long from prefixCoded characters. Rightmost bits will be zero for lower precision codes. This method can be used to decode e.g. a stored field. <a href="#a4bee98b7362bd62472ad7a6b67bb56eb"></a><br/></td></tr>
<tr class="separator:a4bee98b7362bd62472ad7a6b67bb56eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1be7a9b0cb703121ce1e4fb4ca07037a"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a1be7a9b0cb703121ce1e4fb4ca07037a">PrefixCodedToInt</a> (System.String prefixCoded)</td></tr>
<tr class="memdesc:a1be7a9b0cb703121ce1e4fb4ca07037a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an int from prefixCoded characters. Rightmost bits will be zero for lower precision codes. This method can be used to decode e.g. a stored field. <a href="#a1be7a9b0cb703121ce1e4fb4ca07037a"></a><br/></td></tr>
<tr class="separator:a1be7a9b0cb703121ce1e4fb4ca07037a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90161ea01929350491e298af329ea4c1"><td class="memItemLeft" align="right" valign="top">static long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a90161ea01929350491e298af329ea4c1">DoubleToSortableLong</a> (double val)</td></tr>
<tr class="memdesc:a90161ea01929350491e298af329ea4c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a <code>double</code> value to a sortable signed <code>long</code>. The value is converted by getting their IEEE 754 floating-point "double format" bit layout and then some bits are swapped, to be able to compare the result as long. By this the precision is not reduced, but the value can easily used as a long. <a href="#a90161ea01929350491e298af329ea4c1"></a><br/></td></tr>
<tr class="separator:a90161ea01929350491e298af329ea4c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab88289d8bd9243937b8d8751a3571ecb"><td class="memItemLeft" align="right" valign="top">static System.String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#ab88289d8bd9243937b8d8751a3571ecb">DoubleToPrefixCoded</a> (double val)</td></tr>
<tr class="memdesc:ab88289d8bd9243937b8d8751a3571ecb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience method: this just returns: longToPrefixCoded(doubleToSortableLong(val)) <a href="#ab88289d8bd9243937b8d8751a3571ecb"></a><br/></td></tr>
<tr class="separator:ab88289d8bd9243937b8d8751a3571ecb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65d4b220e408f1078784464bf0a845d4"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a65d4b220e408f1078784464bf0a845d4">SortableLongToDouble</a> (long val)</td></tr>
<tr class="memdesc:a65d4b220e408f1078784464bf0a845d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a sortable <code>long</code> back to a <code>double</code>. <a href="#a65d4b220e408f1078784464bf0a845d4"></a><br/></td></tr>
<tr class="separator:a65d4b220e408f1078784464bf0a845d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a247e2df0875d1e2154d54f91ed29fc53"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a247e2df0875d1e2154d54f91ed29fc53">PrefixCodedToDouble</a> (System.String val)</td></tr>
<tr class="memdesc:a247e2df0875d1e2154d54f91ed29fc53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience method: this just returns: sortableLongToDouble(prefixCodedToLong(val)) <a href="#a247e2df0875d1e2154d54f91ed29fc53"></a><br/></td></tr>
<tr class="separator:a247e2df0875d1e2154d54f91ed29fc53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a532f92f7e0c32554f8f6dac364834420"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a532f92f7e0c32554f8f6dac364834420">FloatToSortableInt</a> (float val)</td></tr>
<tr class="memdesc:a532f92f7e0c32554f8f6dac364834420"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a <code>float</code> value to a sortable signed <code>int</code>. The value is converted by getting their IEEE 754 floating-point "float format" bit layout and then some bits are swapped, to be able to compare the result as int. By this the precision is not reduced, but the value can easily used as an int. <a href="#a532f92f7e0c32554f8f6dac364834420"></a><br/></td></tr>
<tr class="separator:a532f92f7e0c32554f8f6dac364834420"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e56cbd595bc5c4a712bef6fdc5bc027"><td class="memItemLeft" align="right" valign="top">static System.String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a5e56cbd595bc5c4a712bef6fdc5bc027">FloatToPrefixCoded</a> (float val)</td></tr>
<tr class="memdesc:a5e56cbd595bc5c4a712bef6fdc5bc027"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience method: this just returns: intToPrefixCoded(floatToSortableInt(val)) <a href="#a5e56cbd595bc5c4a712bef6fdc5bc027"></a><br/></td></tr>
<tr class="separator:a5e56cbd595bc5c4a712bef6fdc5bc027"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accd01e4405396fec6317ef0c10609c9d"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#accd01e4405396fec6317ef0c10609c9d">SortableIntToFloat</a> (int val)</td></tr>
<tr class="memdesc:accd01e4405396fec6317ef0c10609c9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a sortable <code>int</code> back to a <code>float</code>. <a href="#accd01e4405396fec6317ef0c10609c9d"></a><br/></td></tr>
<tr class="separator:accd01e4405396fec6317ef0c10609c9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae40f11eea374b23f945f06085365e30f"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#ae40f11eea374b23f945f06085365e30f">PrefixCodedToFloat</a> (System.String val)</td></tr>
<tr class="memdesc:ae40f11eea374b23f945f06085365e30f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience method: this just returns: sortableIntToFloat(prefixCodedToInt(val)) <a href="#ae40f11eea374b23f945f06085365e30f"></a><br/></td></tr>
<tr class="separator:ae40f11eea374b23f945f06085365e30f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af23993ee55f18cd153a43461f7844f72"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#af23993ee55f18cd153a43461f7844f72">SplitLongRange</a> (<a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_long_range_builder.html">LongRangeBuilder</a> builder, int precisionStep, long minBound, long maxBound)</td></tr>
<tr class="memdesc:af23993ee55f18cd153a43461f7844f72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Splits a long range recursively. You may implement a builder that adds clauses to a <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html" title="A Query that matches documents matching boolean combinations of other queries, e.g. TermQuerys, PhraseQuerys or other BooleanQuerys. ">Lucene.Net.Search.BooleanQuery</a> for each call to its LongRangeBuilder.AddRange(String,String) method. This method is used by NumericRangeQuery{T}. <a href="#af23993ee55f18cd153a43461f7844f72"></a><br/></td></tr>
<tr class="separator:af23993ee55f18cd153a43461f7844f72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6a6b8c10a5ca7b1b2d93071acf0b083"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#aa6a6b8c10a5ca7b1b2d93071acf0b083">SplitIntRange</a> (<a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_int_range_builder.html">IntRangeBuilder</a> builder, int precisionStep, int minBound, int maxBound)</td></tr>
<tr class="memdesc:aa6a6b8c10a5ca7b1b2d93071acf0b083"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Splits an int range recursively. You may implement a builder that adds clauses to a <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html" title="A Query that matches documents matching boolean combinations of other queries, e.g. TermQuerys, PhraseQuerys or other BooleanQuerys. ">Lucene.Net.Search.BooleanQuery</a> for each call to its IntRangeBuilder.AddRange(String,String) method. This method is used by NumericRangeQuery{T}. <a href="#aa6a6b8c10a5ca7b1b2d93071acf0b083"></a><br/></td></tr>
<tr class="separator:aa6a6b8c10a5ca7b1b2d93071acf0b083"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a13bb661922dfb11b9a4f716069f20a9d"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a13bb661922dfb11b9a4f716069f20a9d">PRECISION_STEP_DEFAULT</a> = 4</td></tr>
<tr class="memdesc:a13bb661922dfb11b9a4f716069f20a9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default precision step used by <a class="el" href="_sort_field_8cs.html#a0548f0e7e5187d877d964eab1119b8dd">NumericField</a>, <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a>, NumericRangeQuery{T}, and NumericRangeFilter{T} as default <a href="#a13bb661922dfb11b9a4f716069f20a9d"></a><br/></td></tr>
<tr class="separator:a13bb661922dfb11b9a4f716069f20a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a117dc071069b373744b9513a84706970"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a117dc071069b373744b9513a84706970">BUF_SIZE_LONG</a> = 63 / 7 + 2</td></tr>
<tr class="memdesc:a117dc071069b373744b9513a84706970"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: The maximum term length (used for <code>char[]</code> buffer size) for encoding <code>long</code> values. <a href="#a117dc071069b373744b9513a84706970"></a><br/></td></tr>
<tr class="separator:a117dc071069b373744b9513a84706970"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aceedd475be4f4418e547c5430301620c"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#aceedd475be4f4418e547c5430301620c">BUF_SIZE_INT</a> = 31 / 7 + 2</td></tr>
<tr class="memdesc:aceedd475be4f4418e547c5430301620c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: The maximum term length (used for <code>char[]</code> buffer size) for encoding <code>int</code> values. <a href="#aceedd475be4f4418e547c5430301620c"></a><br/></td></tr>
<tr class="separator:aceedd475be4f4418e547c5430301620c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a9789e89ec2960f4828b367be36f6a7a0"><td class="memItemLeft" align="right" valign="top">static char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a9789e89ec2960f4828b367be36f6a7a0">SHIFT_START_LONG</a> = (char) 0x20</td></tr>
<tr class="memdesc:a9789e89ec2960f4828b367be36f6a7a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Longs are stored at lower precision by shifting off lower bits. The shift count is stored as <code>SHIFT_START_LONG+shift</code> in the first character <a href="#a9789e89ec2960f4828b367be36f6a7a0"></a><br/></td></tr>
<tr class="separator:a9789e89ec2960f4828b367be36f6a7a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a79d00ccf4e57abe772cd8ea7156e2e"><td class="memItemLeft" align="right" valign="top">static char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a9a79d00ccf4e57abe772cd8ea7156e2e">SHIFT_START_INT</a> = (char) 0x60</td></tr>
<tr class="memdesc:a9a79d00ccf4e57abe772cd8ea7156e2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert: Integers are stored at lower precision by shifting off lower bits. The shift count is stored as <code>SHIFT_START_INT+shift</code> in the first character <a href="#a9a79d00ccf4e57abe772cd8ea7156e2e"></a><br/></td></tr>
<tr class="separator:a9a79d00ccf4e57abe772cd8ea7156e2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This is a helper class to generate prefix-encoded representations for numerical values and supplies converters to represent float/double values as sortable integers/longs. </p>
<p>To quickly execute range queries in Apache <a class="el" href="namespace_lucene.html">Lucene</a>, a range is divided recursively into multiple intervals for searching: The center of the range is searched only with the lowest possible precision in the trie, while the boundaries are matched more exactly. This reduces the number of terms dramatically.</p>
<p>This class generates terms to achive this: First the numerical integer values need to be converted to strings. For that integer values (32 bit or 64 bit) are made unsigned and the bits are converted to ASCII chars with each 7 bit. The resulting string is sortable like the original integer value. Each value is also prefixed (in the first char) by the <code>shift</code> value (number of bits removed) used during encoding.</p>
<p>To also index floating point numbers, this class supplies two methods to convert them to integer values by changing their bit layout: <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a90161ea01929350491e298af329ea4c1" title="Converts a double value to a sortable signed long. The value is converted by getting their IEEE 754 f...">DoubleToSortableLong</a>, <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a532f92f7e0c32554f8f6dac364834420" title="Converts a float value to a sortable signed int. The value is converted by getting their IEEE 754 flo...">FloatToSortableInt</a>. You will have no precision loss by converting floating point numbers to integers and back (only that the integer form is not usable). Other data types like dates can easily converted to longs or ints (e.g. date to long: DateTime).</p>
<p>For easy usage, the trie algorithm is implemented for indexing inside <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a> that can index <code>int</code>, <code>long</code>, <code>float</code>, and <code>double</code>. For querying, NumericRangeQuery{T} and NumericRangeFilter{T} implement the query part for the same data types.</p>
<p>This class can also be used, to generate lexicographically sortable (according String.CompareTo(String)) representations of numeric data types for other usages (e.g. sorting).</p>
<p>&lt;font color="red"&gt;<b>NOTE:</b> This API is experimental and might change in incompatible ways in the next release.&lt;/font&gt;</p>
<p>&lt;since&gt; 2.9 &lt;/since&gt; </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00065">65</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ab88289d8bd9243937b8d8751a3571ecb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static System.String Lucene.Net.Util.NumericUtils.DoubleToPrefixCoded </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience method: this just returns: longToPrefixCoded(doubleToSortableLong(val)) </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00285">285</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a90161ea01929350491e298af329ea4c1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static long Lucene.Net.Util.NumericUtils.DoubleToSortableLong </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a <code>double</code> value to a sortable signed <code>long</code>. The value is converted by getting their IEEE 754 floating-point "double format" bit layout and then some bits are swapped, to be able to compare the result as long. By this the precision is not reduced, but the value can easily used as a long. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a65d4b220e408f1078784464bf0a845d4" title="Converts a sortable long back to a double.">SortableLongToDouble</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00274">274</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a5e56cbd595bc5c4a712bef6fdc5bc027"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static System.String Lucene.Net.Util.NumericUtils.FloatToPrefixCoded </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience method: this just returns: intToPrefixCoded(floatToSortableInt(val)) </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00326">326</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a532f92f7e0c32554f8f6dac364834420"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int Lucene.Net.Util.NumericUtils.FloatToSortableInt </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a <code>float</code> value to a sortable signed <code>int</code>. The value is converted by getting their IEEE 754 floating-point "float format" bit layout and then some bits are swapped, to be able to compare the result as int. By this the precision is not reduced, but the value can easily used as an int. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#accd01e4405396fec6317ef0c10609c9d" title="Converts a sortable int back to a float.">SortableIntToFloat</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00315">315</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a83be865f28091660f1c4becd912ef742"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int Lucene.Net.Util.NumericUtils.IntToPrefixCoded </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char[]&#160;</td>
<td class="paramname"><em>buffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">val</td><td>the numeric value </td></tr>
<tr><td class="paramname">shift</td><td>how many bits to strip from the right </td></tr>
<tr><td class="paramname">buffer</td><td>that will contain the encoded chars, must be at least of <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#aceedd475be4f4418e547c5430301620c" title="Expert: The maximum term length (used for char[] buffer size) for encoding int values. ">BUF_SIZE_INT</a> length </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of chars written to buffer </dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00168">168</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a9530f1903f061fc6c8cef0f381e61f3a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static System.String Lucene.Net.Util.NumericUtils.IntToPrefixCoded </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_int_range_builder.html" title="Expert: Callback for SplitIntRange. You need to overwrite only one of the methods. &lt;font color=&quot;red&quot;&gt;NOTE: This is a very low-level interface, the method signatures may change in later versions.&lt;/font&gt; ">IntRangeBuilder</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">val</td><td>the numeric value </td></tr>
<tr><td class="paramname">shift</td><td>how many bits to strip from the right </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00194">194</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="ac601c5d2002290970d30bd5e228687cc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static System.String Lucene.Net.Util.NumericUtils.IntToPrefixCoded </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is a convenience method, that returns prefix coded bits of an int without reducing the precision. It can be used to store the full precision value as a stored field in index. To decode, use <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a1be7a9b0cb703121ce1e4fb4ca07037a" title="Returns an int from prefixCoded characters. Rightmost bits will be zero for lower precision codes...">PrefixCodedToInt</a>. </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00206">206</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a80b004ebd3c8be48c4c02ff709ecc043"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int Lucene.Net.Util.NumericUtils.LongToPrefixCoded </td>
<td>(</td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char[]&#160;</td>
<td class="paramname"><em>buffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">val</td><td>the numeric value </td></tr>
<tr><td class="paramname">shift</td><td>how many bits to strip from the right </td></tr>
<tr><td class="paramname">buffer</td><td>that will contain the encoded chars, must be at least of <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a117dc071069b373744b9513a84706970" title="Expert: The maximum term length (used for char[] buffer size) for encoding long values. ">BUF_SIZE_LONG</a> length </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of chars written to buffer </dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00113">113</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a9c92836fd5266a1681b6d936b6c3862a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static System.String Lucene.Net.Util.NumericUtils.LongToPrefixCoded </td>
<td>(</td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Returns prefix coded bits after reducing the precision by <code>shift</code> bits. This is method is used by <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_long_range_builder.html" title="Expert: Callback for SplitLongRange. You need to overwrite only one of the methods. &lt;font color=&quot;red&quot;&gt;NOTE: This is a very low-level interface, the method signatures may change in later versions.&lt;/font&gt; ">LongRangeBuilder</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">val</td><td>the numeric value </td></tr>
<tr><td class="paramname">shift</td><td>how many bits to strip from the right </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00139">139</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="af5bee9f3e763bb2234b070e8f1c2055c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static System.String Lucene.Net.Util.NumericUtils.LongToPrefixCoded </td>
<td>(</td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is a convenience method, that returns prefix coded bits of a long without reducing the precision. It can be used to store the full precision value as a stored field in index. To decode, use <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a4bee98b7362bd62472ad7a6b67bb56eb" title="Returns a long from prefixCoded characters. Rightmost bits will be zero for lower precision codes...">PrefixCodedToLong</a>. </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00151">151</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a247e2df0875d1e2154d54f91ed29fc53"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double Lucene.Net.Util.NumericUtils.PrefixCodedToDouble </td>
<td>(</td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience method: this just returns: sortableLongToDouble(prefixCodedToLong(val)) </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00303">303</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="ae40f11eea374b23f945f06085365e30f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static float Lucene.Net.Util.NumericUtils.PrefixCodedToFloat </td>
<td>(</td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience method: this just returns: sortableIntToFloat(prefixCodedToInt(val)) </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00344">344</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a1be7a9b0cb703121ce1e4fb4ca07037a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int Lucene.Net.Util.NumericUtils.PrefixCodedToInt </td>
<td>(</td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>prefixCoded</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an int from prefixCoded characters. Rightmost bits will be zero for lower precision codes. This method can be used to decode e.g. a stored field. </p>
<p>&lt;throws&gt; NumberFormatException if the supplied string is &lt;/throws&gt; </p>
<p>not correctly prefix encoded. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#ac601c5d2002290970d30bd5e228687cc" title="This is a convenience method, that returns prefix coded bits of an int without reducing the precision...">IntToPrefixCoded(int)</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00248">248</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a4bee98b7362bd62472ad7a6b67bb56eb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static long Lucene.Net.Util.NumericUtils.PrefixCodedToLong </td>
<td>(</td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>prefixCoded</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a long from prefixCoded characters. Rightmost bits will be zero for lower precision codes. This method can be used to decode e.g. a stored field. </p>
<p>&lt;throws&gt; NumberFormatException if the supplied string is &lt;/throws&gt; </p>
<p>not correctly prefix encoded. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#af5bee9f3e763bb2234b070e8f1c2055c" title="This is a convenience method, that returns prefix coded bits of a long without reducing the precision...">LongToPrefixCoded(long)</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00220">220</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="accd01e4405396fec6317ef0c10609c9d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static float Lucene.Net.Util.NumericUtils.SortableIntToFloat </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a sortable <code>int</code> back to a <code>float</code>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a532f92f7e0c32554f8f6dac364834420" title="Converts a float value to a sortable signed int. The value is converted by getting their IEEE 754 flo...">FloatToSortableInt</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00334">334</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a65d4b220e408f1078784464bf0a845d4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double Lucene.Net.Util.NumericUtils.SortableLongToDouble </td>
<td>(</td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a sortable <code>long</code> back to a <code>double</code>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a90161ea01929350491e298af329ea4c1" title="Converts a double value to a sortable signed long. The value is converted by getting their IEEE 754 f...">DoubleToSortableLong</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00293">293</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="aa6a6b8c10a5ca7b1b2d93071acf0b083"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void Lucene.Net.Util.NumericUtils.SplitIntRange </td>
<td>(</td>
<td class="paramtype"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_int_range_builder.html">IntRangeBuilder</a>&#160;</td>
<td class="paramname"><em>builder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>precisionStep</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>minBound</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>maxBound</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Splits an int range recursively. You may implement a builder that adds clauses to a <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html" title="A Query that matches documents matching boolean combinations of other queries, e.g. TermQuerys, PhraseQuerys or other BooleanQuerys. ">Lucene.Net.Search.BooleanQuery</a> for each call to its IntRangeBuilder.AddRange(String,String) method. This method is used by NumericRangeQuery{T}. </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00368">368</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="af23993ee55f18cd153a43461f7844f72"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void Lucene.Net.Util.NumericUtils.SplitLongRange </td>
<td>(</td>
<td class="paramtype"><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils_1_1_long_range_builder.html">LongRangeBuilder</a>&#160;</td>
<td class="paramname"><em>builder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>precisionStep</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>minBound</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>maxBound</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Splits a long range recursively. You may implement a builder that adds clauses to a <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html" title="A Query that matches documents matching boolean combinations of other queries, e.g. TermQuerys, PhraseQuerys or other BooleanQuerys. ">Lucene.Net.Search.BooleanQuery</a> for each call to its LongRangeBuilder.AddRange(String,String) method. This method is used by NumericRangeQuery{T}. </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00356">356</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="aceedd475be4f4418e547c5430301620c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int Lucene.Net.Util.NumericUtils.BUF_SIZE_INT = 31 / 7 + 2</td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: The maximum term length (used for <code>char[]</code> buffer size) for encoding <code>int</code> values. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a83be865f28091660f1c4becd912ef742" title="Expert: Returns prefix coded bits after reducing the precision by shift bits. This is method is used ...">IntToPrefixCoded(int,int,char[])</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00099">99</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a117dc071069b373744b9513a84706970"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int Lucene.Net.Util.NumericUtils.BUF_SIZE_LONG = 63 / 7 + 2</td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: The maximum term length (used for <code>char[]</code> buffer size) for encoding <code>long</code> values. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_util_1_1_numeric_utils.html#a80b004ebd3c8be48c4c02ff709ecc043" title="Expert: Returns prefix coded bits after reducing the precision by shift bits. This is method is used ...">LongToPrefixCoded(long,int,char[])</a></dd></dl>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00087">87</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a13bb661922dfb11b9a4f716069f20a9d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int Lucene.Net.Util.NumericUtils.PRECISION_STEP_DEFAULT = 4</td>
</tr>
</table>
</div><div class="memdoc">
<p>The default precision step used by <a class="el" href="_sort_field_8cs.html#a0548f0e7e5187d877d964eab1119b8dd">NumericField</a>, <a class="el" href="_numeric_utils_8cs.html#ab25a5cea67a38594cfddfac92e18554e">NumericTokenStream</a>, NumericRangeQuery{T}, and NumericRangeFilter{T} as default </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00075">75</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a9a79d00ccf4e57abe772cd8ea7156e2e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char Lucene.Net.Util.NumericUtils.SHIFT_START_INT = (char) 0x60</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Integers are stored at lower precision by shifting off lower bits. The shift count is stored as <code>SHIFT_START_INT+shift</code> in the first character </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00092">92</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a9789e89ec2960f4828b367be36f6a7a0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char Lucene.Net.Util.NumericUtils.SHIFT_START_LONG = (char) 0x20</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Expert: Longs are stored at lower precision by shifting off lower bits. The shift count is stored as <code>SHIFT_START_LONG+shift</code> in the first character </p>
<p>Definition at line <a class="el" href="_numeric_utils_8cs_source.html#l00080">80</a> of file <a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>core/Util/<a class="el" href="_numeric_utils_8cs_source.html">NumericUtils.cs</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 3 2013 02:12:59 for Lucene.Net by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3
</small></address>
</body>
</html>