blob: 5b42c19ac81933f2c3d8f71dbaaadf20532ce8b2 [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.Search.Similarity 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_search.html">Search</a></li><li class="navelem"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html">Similarity</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="class_lucene_1_1_net_1_1_search_1_1_similarity-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Lucene.Net.Search.Similarity Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Expert: Scoring API. Subclasses implement search scoring.
<a href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#details">More...</a></p>
<p>Inherited by <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html">Lucene.Net.Search.SimilarityDelegator</a>.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:accbd724f439b07b64379b590bcd2ba81"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#accbd724f439b07b64379b590bcd2ba81">ComputeNorm</a> (System.String field, <a class="el" href="_fieldable_8cs.html#a7e48939924d26d58803de390e852a01c">FieldInvertState</a> state)</td></tr>
<tr class="memdesc:accbd724f439b07b64379b590bcd2ba81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the normalization value for a field, given the accumulated state of term processing for this field (see <a class="el" href="_similarity_delegator_8cs.html#a7e48939924d26d58803de390e852a01c">FieldInvertState</a>). <a href="#accbd724f439b07b64379b590bcd2ba81"></a><br/></td></tr>
<tr class="separator:accbd724f439b07b64379b590bcd2ba81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cb3ee80bc11c2d608ce673ead8bfcba"><td class="memItemLeft" align="right" valign="top">abstract float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a3cb3ee80bc11c2d608ce673ead8bfcba">LengthNorm</a> (System.String fieldName, int numTokens)</td></tr>
<tr class="memdesc:a3cb3ee80bc11c2d608ce673ead8bfcba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the normalization value for a field given the total number of terms contained in a field. These values, together with field boosts, are stored in an index and multipled into scores for hits on each field by the search code. <a href="#a3cb3ee80bc11c2d608ce673ead8bfcba"></a><br/></td></tr>
<tr class="separator:a3cb3ee80bc11c2d608ce673ead8bfcba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a941d4d16d71b59858e360de8c2d59371"><td class="memItemLeft" align="right" valign="top">abstract float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a941d4d16d71b59858e360de8c2d59371">QueryNorm</a> (float sumOfSquaredWeights)</td></tr>
<tr class="memdesc:a941d4d16d71b59858e360de8c2d59371"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the normalization value for a query given the sum of the squared weights of each of the query terms. This value is then multipled into the weight of each query term. <a href="#a941d4d16d71b59858e360de8c2d59371"></a><br/></td></tr>
<tr class="separator:a941d4d16d71b59858e360de8c2d59371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab08940fe117d42b282f342a09b6beba9"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ab08940fe117d42b282f342a09b6beba9">Tf</a> (int freq)</td></tr>
<tr class="memdesc:ab08940fe117d42b282f342a09b6beba9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a score factor based on a term or phrase's frequency in a document. This value is multiplied by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a6cb62d3308ca06f13600cb714a8e1d73" title="Computes a score factor based on a term&#39;s document frequency (the number of documents which contain t...">Idf(int, int)</a> factor for each term in the query and these products are then summed to form the initial score for a document. <a href="#ab08940fe117d42b282f342a09b6beba9"></a><br/></td></tr>
<tr class="separator:ab08940fe117d42b282f342a09b6beba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58d84da69da3185f4c2548d80d02fd26"><td class="memItemLeft" align="right" valign="top">abstract float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a58d84da69da3185f4c2548d80d02fd26">SloppyFreq</a> (int distance)</td></tr>
<tr class="memdesc:a58d84da69da3185f4c2548d80d02fd26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the amount of a sloppy phrase match, based on an edit distance. This value is summed for each sloppy phrase match in a document to form the frequency that is passed to <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ad75051e13336926fdc23ed04958d1409" title="Computes a score factor based on a term or phrase&#39;s frequency in a document. This value is multiplied...">Tf(float)</a>. <a href="#a58d84da69da3185f4c2548d80d02fd26"></a><br/></td></tr>
<tr class="separator:a58d84da69da3185f4c2548d80d02fd26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad75051e13336926fdc23ed04958d1409"><td class="memItemLeft" align="right" valign="top">abstract float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ad75051e13336926fdc23ed04958d1409">Tf</a> (float freq)</td></tr>
<tr class="memdesc:ad75051e13336926fdc23ed04958d1409"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a score factor based on a term or phrase's frequency in a document. This value is multiplied by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a6cb62d3308ca06f13600cb714a8e1d73" title="Computes a score factor based on a term&#39;s document frequency (the number of documents which contain t...">Idf(int, int)</a> factor for each term in the query and these products are then summed to form the initial score for a document. <a href="#ad75051e13336926fdc23ed04958d1409"></a><br/></td></tr>
<tr class="separator:ad75051e13336926fdc23ed04958d1409"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bfd3c3d2722ff351f7c5793f0ece506"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="_phrase_query_8cs.html#a6210369909e0fef392bc63926b45beaf">IDFExplanation</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a9bfd3c3d2722ff351f7c5793f0ece506">IdfExplain</a> (<a class="el" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> term, <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html">Searcher</a> searcher)</td></tr>
<tr class="memdesc:a9bfd3c3d2722ff351f7c5793f0ece506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a score factor for a simple term and returns an explanation for that score factor. <a href="#a9bfd3c3d2722ff351f7c5793f0ece506"></a><br/></td></tr>
<tr class="separator:a9bfd3c3d2722ff351f7c5793f0ece506"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaefd61909f04a234baaec33d387e64e"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="_phrase_query_8cs.html#a6210369909e0fef392bc63926b45beaf">IDFExplanation</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#acaefd61909f04a234baaec33d387e64e">IdfExplain</a> (ICollection&lt; <a class="el" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> &gt; terms, <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html">Searcher</a> searcher)</td></tr>
<tr class="memdesc:acaefd61909f04a234baaec33d387e64e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a score factor for a phrase. <a href="#acaefd61909f04a234baaec33d387e64e"></a><br/></td></tr>
<tr class="separator:acaefd61909f04a234baaec33d387e64e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cb62d3308ca06f13600cb714a8e1d73"><td class="memItemLeft" align="right" valign="top">abstract float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a6cb62d3308ca06f13600cb714a8e1d73">Idf</a> (int docFreq, int numDocs)</td></tr>
<tr class="memdesc:a6cb62d3308ca06f13600cb714a8e1d73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a score factor based on a term's document frequency (the number of documents which contain the term). This value is multiplied by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ab08940fe117d42b282f342a09b6beba9" title="Computes a score factor based on a term or phrase&#39;s frequency in a document. This value is multiplied...">Tf(int)</a> factor for each term in the query and these products are then summed to form the initial score for a document. <a href="#a6cb62d3308ca06f13600cb714a8e1d73"></a><br/></td></tr>
<tr class="separator:a6cb62d3308ca06f13600cb714a8e1d73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acef90f6b9b05e7f0d63e145987229e85"><td class="memItemLeft" align="right" valign="top">abstract float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#acef90f6b9b05e7f0d63e145987229e85">Coord</a> (int overlap, int maxOverlap)</td></tr>
<tr class="memdesc:acef90f6b9b05e7f0d63e145987229e85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a score factor based on the fraction of all query terms that a document contains. This value is multiplied into scores. <a href="#acef90f6b9b05e7f0d63e145987229e85"></a><br/></td></tr>
<tr class="separator:acef90f6b9b05e7f0d63e145987229e85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5973cd115b539d631e994fdf86021439"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a5973cd115b539d631e994fdf86021439">ScorePayload</a> (int docId, System.String fieldName, int start, int end, byte[] payload, int offset, int length)</td></tr>
<tr class="memdesc:a5973cd115b539d631e994fdf86021439"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate a scoring factor based on the data in the payload. Overriding implementations are responsible for interpreting what is in the payload. <a class="el" href="namespace_lucene.html">Lucene</a> makes no assumptions about what is in the byte array. The default implementation returns 1. <a href="#a5973cd115b539d631e994fdf86021439"></a><br/></td></tr>
<tr class="separator:a5973cd115b539d631e994fdf86021439"><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:acd2a4329c78ea23877a82c425fe76188"><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_search_1_1_similarity.html#acd2a4329c78ea23877a82c425fe76188">DecodeNorm</a> (byte b)</td></tr>
<tr class="memdesc:acd2a4329c78ea23877a82c425fe76188"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes a normalization factor stored in an index. <a href="#acd2a4329c78ea23877a82c425fe76188"></a><br/></td></tr>
<tr class="separator:acd2a4329c78ea23877a82c425fe76188"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad157cc6f3b9070ecd1691d4ffde1eb4b"><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_search_1_1_similarity.html#ad157cc6f3b9070ecd1691d4ffde1eb4b">GetNormDecoder</a> ()</td></tr>
<tr class="memdesc:ad157cc6f3b9070ecd1691d4ffde1eb4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a table for decoding normalization bytes. <a href="#ad157cc6f3b9070ecd1691d4ffde1eb4b"></a><br/></td></tr>
<tr class="separator:ad157cc6f3b9070ecd1691d4ffde1eb4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb8c94a5e3079a47004af1bf117af1de"><td class="memItemLeft" align="right" valign="top">static byte&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#abb8c94a5e3079a47004af1bf117af1de">EncodeNorm</a> (float f)</td></tr>
<tr class="memdesc:abb8c94a5e3079a47004af1bf117af1de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encodes a normalization factor for storage in an index. <a href="#abb8c94a5e3079a47004af1bf117af1de"></a><br/></td></tr>
<tr class="separator:abb8c94a5e3079a47004af1bf117af1de"><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:a7179ebc4356c719c153df4f93f56800e"><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_search_1_1_similarity.html#a7179ebc4356c719c153df4f93f56800e">NO_DOC_ID_PROVIDED</a> = - 1</td></tr>
<tr class="separator:a7179ebc4356c719c153df4f93f56800e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a6d67e665ab410e69b7cfbf3a941e53dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a6d67e665ab410e69b7cfbf3a941e53dd">Similarity</a> ()</td></tr>
<tr class="separator:a6d67e665ab410e69b7cfbf3a941e53dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a374d891e671bbaca17d776be505bc944"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html">Similarity</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a374d891e671bbaca17d776be505bc944">Default</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a374d891e671bbaca17d776be505bc944"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets or sets the default <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> implementation used by indexing and search code. This is initially an instance of <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html" title="Expert: Default scoring implementation. ">DefaultSimilarity</a>. <a href="#a374d891e671bbaca17d776be505bc944"></a><br/></td></tr>
<tr class="separator:a374d891e671bbaca17d776be505bc944"><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>Expert: Scoring API. </p>
<p>Subclasses implement search scoring. </p>
<p>The score of query <code>q</code> for document <code>d</code> correlates to the cosine-distance or dot-product between document and query vectors in a <a href="http://en.wikipedia.org/wiki/Vector_Space_Model">Vector Space Model (VSM) of Information Retrieval</a>. A document whose vector is closer to the query vector in that model is scored higher.</p>
<p>The score is computed as follows:</p>
<table cellpadding="1" cellspacing="0" border="1" align="center">
<tr>
<td><table cellpadding="1" cellspacing="0" border="0" align="center">
<tr>
<td valign="middle" align="right" rowspan="1">score(q,d) &amp;#160; = &amp;#160; <a href="#formula_coord">coord(q,d)</a> &amp;#160;&amp;#183;&amp;#160; <a href="#formula_queryNorm">queryNorm(q)</a> &amp;#160;&amp;#183;&amp;#160; </td><td valign="bottom" align="center" rowspan="1">&lt;big&gt;&lt;big&gt;&lt;big&gt;&amp;#8721;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt; </td><td valign="middle" align="right" rowspan="1">&lt;big&gt;&lt;big&gt;(&lt;/big&gt;&lt;/big&gt; <a href="#formula_tf">tf(t in d)</a> &amp;#160;&amp;#183;&amp;#160; <a href="#formula_idf">idf(t)</a><sup>2</sup> &amp;#160;&amp;#183;&amp;#160; <a href="#formula_termBoost">t.Boost</a>&amp;#160;&amp;#183;&amp;#160; <a href="#formula_norm">norm(t,d)</a> &lt;big&gt;&lt;big&gt;)&lt;/big&gt;&lt;/big&gt; </td></tr>
<tr valigh="top">
<td></td><td align="center"><small>t in q</small> </td><td></td></tr>
</table>
</td></tr>
</table>
<p>where </p>
<ul>
<li>
<p class="startli"><a class="anchor" id="formula_tf"></a> <b>tf(t in d)</b> correlates to the term's <em>frequency</em>, defined as the number of times term <em>t</em> appears in the currently scored document <em>d</em>. <a class="el" href="namespace_lucene_1_1_net_1_1_documents.html">Documents</a> that have more occurrences of a given term receive a higher score. The default computation for <em>tf(t in d)</em> in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a23cb836777a596d02d86de28e723e826">DefaultSimilarity</a> is:</p>
<p><br/>
&amp;#160;<br/>
</p>
<table cellpadding="2" cellspacing="2" border="0" align="center">
<tr>
<td valign="middle" align="right" rowspan="1"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a23cb836777a596d02d86de28e723e826">tf(t in d)</a> &amp;#160; = &amp;#160; </td><td valign="top" align="center" rowspan="1">frequency<sup>&lt;big&gt;&amp;#189;&lt;/big&gt;</sup> </td></tr>
</table>
<p><br/>
&amp;#160;<br/>
</p>
<p class="endli"></p>
</li>
<li>
<p class="startli"><a class="anchor" id="formula_idf"></a> <b>idf(t)</b> stands for Inverse Document Frequency. This value correlates to the inverse of <em>docFreq</em> (the number of documents in which the term <em>t</em> appears). This means rarer terms give higher contribution to the total score. The default computation for <em>idf(t)</em> in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a373cb8d80a99d28e1cfc2a291fb0b8dc">DefaultSimilarity</a> is:</p>
<p><br/>
&amp;#160;<br/>
</p>
<table cellpadding="2" cellspacing="2" border="0" align="center">
<tr>
<td valign="middle" align="right"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a373cb8d80a99d28e1cfc2a291fb0b8dc">idf(t)</a>&amp;#160; = &amp;#160; </td><td valign="middle" align="center">1 + log &lt;big&gt;(&lt;/big&gt; </td><td valign="middle" align="center"><table class="doxtable">
<tr>
<td align="center"><small>numDocs</small> </td></tr>
<tr>
<td align="center">&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211; </td></tr>
<tr>
<td align="center"><small>docFreq+1</small> </td></tr>
</table>
</td><td valign="middle" align="center">&lt;big&gt;)&lt;/big&gt; </td></tr>
</table>
<p><br/>
&amp;#160;<br/>
</p>
<p class="endli"></p>
</li>
<li>
<p class="startli"><a class="anchor" id="formula_coord"></a> <b>coord(q,d)</b> is a score factor based on how many of the query terms are found in the specified document. Typically, a document that contains more of the query's terms will receive a higher score than another document with fewer query terms. This is a search time factor computed in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#acef90f6b9b05e7f0d63e145987229e85">coord(q,d)</a> by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> in effect at search time. <br/>
&amp;#160;<br/>
</p>
<p class="endli"></p>
</li>
<li>
<p class="startli"><b> <a class="anchor" id="formula_queryNorm"></a> queryNorm(q) </b> is a normalizing factor used to make scores between queries comparable. This factor does not affect document ranking (since all ranked documents are multiplied by the same factor), but rather just attempts to make scores from different queries (or even different indexes) comparable. This is a search time factor computed by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> in effect at search time.</p>
<p>The default computation in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#aac12c840f91004aa02461da448b42f2d">DefaultSimilarity</a> is: <br/>
&amp;#160;<br/>
</p>
<table cellpadding="1" cellspacing="0" border="0" align="center">
<tr>
<td valign="middle" align="right" rowspan="1">queryNorm(q) &amp;#160; = &amp;#160; <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#aac12c840f91004aa02461da448b42f2d">queryNorm(sumOfSquaredWeights)</a> &amp;#160; = &amp;#160; </td><td valign="middle" align="center" rowspan="1"><table class="doxtable">
<tr>
<td align="center">&lt;big&gt;1&lt;/big&gt; </td></tr>
<tr>
<td align="center">&lt;big&gt; &amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211;&amp;#8211; &lt;/big&gt; </td></tr>
<tr>
<td align="center">sumOfSquaredWeights<sup>&lt;big&gt;&amp;#189;&lt;/big&gt;</sup> </td></tr>
</table>
</td></tr>
</table>
<p><br/>
&amp;#160;<br/>
</p>
<p>The sum of squared weights (of the query terms) is computed by the query <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_weight.html" title="Expert: Calculate query weights and build query scorers. The purpose of Weight is to ensure searching...">Lucene.Net.Search.Weight</a> object. For example, a <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html">boolean query</a> computes this value as:</p>
<p><br/>
&amp;#160;<br/>
</p>
<table cellpadding="1" cellspacing="0" border="0" align="center">
<tr>
<td valign="middle" align="right" rowspan="1"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_weight.html#a0a9aa5e55306164f0b5e6b8ee30b8a41">GetSumOfSquaredWeights</a> &amp;#160; = &amp;#160; <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a2a58b600e864bed65cc21815fffa0218">q.Boost</a> <sup>&lt;big&gt;2&lt;/big&gt;</sup> &amp;#160;&amp;#183;&amp;#160; </td><td valign="bottom" align="center" rowspan="1">&lt;big&gt;&lt;big&gt;&lt;big&gt;&amp;#8721;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt; </td><td valign="middle" align="right" rowspan="1">&lt;big&gt;&lt;big&gt;(&lt;/big&gt;&lt;/big&gt; <a href="#formula_idf">idf(t)</a> &amp;#160;&amp;#183;&amp;#160; <a href="#formula_termBoost">t.Boost</a> &lt;big&gt;&lt;big&gt;) <sup>2</sup> &lt;/big&gt;&lt;/big&gt; </td></tr>
<tr valigh="top">
<td></td><td align="center"><small>t in q</small> </td><td></td></tr>
</table>
<p><br/>
&amp;#160;<br/>
</p>
<p></p>
<p class="endli"></p>
</li>
<li>
<p class="startli"><a class="anchor" id="formula_termBoost"></a> <b>t.Boost</b> is a search time boost of term <em>t</em> in the query <em>q</em> as specified in the query text (see <a href="../../../../../../queryparsersyntax.html#Boosting a Term">query syntax</a>), or as set by application calls to <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a2a58b600e864bed65cc21815fffa0218" title="Gets or sets the boost for this query clause to b. Documents matching this clause will (in addition t...">Lucene.Net.Search.Query.Boost</a>. Notice that there is really no direct API for accessing a boost of one term in a multi term query, but rather multi terms are represented in a query as multi <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_term_query.html">TermQuery</a> objects, and so the boost of a term in the query is accessible by calling the sub-query <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a2a58b600e864bed65cc21815fffa0218" title="Gets or sets the boost for this query clause to b. Documents matching this clause will (in addition t...">Lucene.Net.Search.Query.Boost</a>. <br/>
&amp;#160;<br/>
</p>
<p class="endli"></p>
</li>
<li>
<p class="startli"><a class="anchor" id="formula_norm"></a> <b>norm(t,d)</b> encapsulates a few (indexing time) boost and length factors:</p>
<ul>
<li>
<b>Document boost</b> - set by calling <a class="el" href="">doc.Boost</a> before adding the document to the index. </li>
<li>
<b>Field boost</b> - set by calling <a class="el" href="">field.Boost</a> before adding the field to a document. </li>
<li>
<a class="el" href="">LengthNorm(field)</a> - computed when the document is added to the index in accordance with the number of tokens of this field in the document, so that shorter fields contribute more to the score. LengthNorm is computed by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> class in effect at indexing. </li>
</ul>
<p></p>
<p>When a document is added to the index, all the above factors are multiplied. If the document has multiple fields with the same name, all their boosts are multiplied together:</p>
<p class="endli"><br/>
&amp;#160;<br/>
</p>
<table cellpadding="1" cellspacing="0" border="0" align="center">
<tr>
<td valign="middle" align="right" rowspan="1">norm(t,d) &amp;#160; = &amp;#160; <a class="el" href="">doc.Boost</a> &amp;#160;&amp;#183;&amp;#160; <a class="el" href="">LengthNorm(field)</a> &amp;#160;&amp;#183;&amp;#160; </td><td valign="bottom" align="center" rowspan="1">&lt;big&gt;&lt;big&gt;&lt;big&gt;&amp;#8719;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt; </td><td valign="middle" align="right" rowspan="1"><a class="el" href="">field.Boost</a> </td></tr>
<tr valigh="top">
<td></td><td align="center"><small>field <em><b>f</b></em> in <em>d</em> named as <em><b>t</b></em></small> </td><td></td></tr>
</table>
<p><br/>
&amp;#160;<br/>
However the resulted <em>norm</em> value is <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#abb8c94a5e3079a47004af1bf117af1de">encoded</a> as a single byte before being stored. At search time, the norm byte value is read from the index <a class="el" href="class_lucene_1_1_net_1_1_store_1_1_directory.html">directory</a> and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#acd2a4329c78ea23877a82c425fe76188">decoded</a> back to a float <em>norm</em> value. This encoding/decoding, while reducing index size, comes with the price of precision loss - it is not guaranteed that decode(encode(x)) = x. For instance, decode(encode(0.89)) = 0.75. Also notice that search time is too late to modify this <em>norm</em> part of scoring, e.g. by using a different <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> for search. <br/>
&amp;#160;<br/>
</p>
</li>
</ul>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a374d891e671bbaca17d776be505bc944" title="Gets or sets the default Similarity implementation used by indexing and search code. This is initially an instance of DefaultSimilarity. ">Default</a></dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_index_1_1_index_writer.html#a2f133271bb3f57361cd4036b4d136233" title="Expert: Return the Similarity implementation used by this IndexWriter.">Lucene.Net.Index.IndexWriter.Similarity</a></dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html#a55a253cf1562ad7f1779d6f76f84c2de" title="Expert: Gets or Sets the Similarity implementation used by this Searcher.">Searcher.Similarity</a></dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00293">293</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a6d67e665ab410e69b7cfbf3a941e53dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Lucene.Net.Search.Similarity.Similarity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00295">295</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="accbd724f439b07b64379b590bcd2ba81"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual float Lucene.Net.Search.Similarity.ComputeNorm </td>
<td>(</td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>field</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="_fieldable_8cs.html#a7e48939924d26d58803de390e852a01c">FieldInvertState</a>&#160;</td>
<td class="paramname"><em>state</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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the normalization value for a field, given the accumulated state of term processing for this field (see <a class="el" href="_similarity_delegator_8cs.html#a7e48939924d26d58803de390e852a01c">FieldInvertState</a>). </p>
<p>Implementations should calculate a float value based on the field state and then return that value.</p>
<p>For backward compatibility this method by default calls LengthNorm(String, int) passing FieldInvertState.Length as the second argument, and then multiplies this value by FieldInvertState.Boost.</p>
<p><b>WARNING</b>: This API is new and experimental and may suddenly change.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">field</td><td>field name </td></tr>
<tr><td class="paramname">state</td><td>current processing state for this field </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the calculated float norm </dd></dl>
<p>Reimplemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#ad14b290caf25c05dc441a35ddff28969">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#a905e46224a562ecfcf90f3aed93658ea">Lucene.Net.Search.SimilarityDelegator</a>.</p>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00437">437</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="acef90f6b9b05e7f0d63e145987229e85"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract float Lucene.Net.Search.Similarity.Coord </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>overlap</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>maxOverlap</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">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a score factor based on the fraction of all query terms that a document contains. This value is multiplied into scores. </p>
<p>The presence of a large portion of the query terms indicates a better match with the query, so implementations of this method usually return larger values when the ratio between these parameters is large and smaller values when the ratio between them is small.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">overlap</td><td>the number of query terms matched in the document </td></tr>
<tr><td class="paramname">maxOverlap</td><td>the total number of terms in the query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a score factor based on term overlap with the query </dd></dl>
<p>Implemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a52b567fd4d51b9ed6ab0afe74f96efdc">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#a39feb6fe73a81bf88f4601f1f0bbaeda">Lucene.Net.Search.SimilarityDelegator</a>.</p>
</div>
</div>
<a class="anchor" id="acd2a4329c78ea23877a82c425fe76188"></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.Search.Similarity.DecodeNorm </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>b</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>Decodes a normalization factor stored in an index.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#abb8c94a5e3079a47004af1bf117af1de" title="Encodes a normalization factor for storage in an index.">EncodeNorm(float)</a></dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00403">403</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="abb8c94a5e3079a47004af1bf117af1de"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static byte Lucene.Net.Search.Similarity.EncodeNorm </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>f</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>Encodes a normalization factor for storage in an index. </p>
<p>The encoding uses a three-bit mantissa, a five-bit exponent, and the zero-exponent point at 15, thus representing values from around 7x10^9 to 2x10^-9 with about one significant decimal digit of accuracy. Zero is also represented. Negative numbers are rounded up to zero. Values too large to represent are rounded down to the largest representable value. Positive values too small to represent are rounded up to the smallest positive representable value.</p>
<dl class="section see"><dt>See Also</dt><dd>Lucene.Net.Documents.AbstractField.Boost, <a class="el" href="class_lucene_1_1_net_1_1_util_1_1_small_float.html" title="Floating point numbers smaller than 32 bits.">Lucene.Net.Util.SmallFloat</a></dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00498">498</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="ad157cc6f3b9070ecd1691d4ffde1eb4b"></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.Search.Similarity.GetNormDecoder </td>
<td>(</td>
<td class="paramname"></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 table for decoding normalization bytes.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#abb8c94a5e3079a47004af1bf117af1de" title="Encodes a normalization factor for storage in an index.">EncodeNorm(float)</a></dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00411">411</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a6cb62d3308ca06f13600cb714a8e1d73"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract float Lucene.Net.Search.Similarity.Idf </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>docFreq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>numDocs</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">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a score factor based on a term's document frequency (the number of documents which contain the term). This value is multiplied by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ab08940fe117d42b282f342a09b6beba9" title="Computes a score factor based on a term or phrase&#39;s frequency in a document. This value is multiplied...">Tf(int)</a> factor for each term in the query and these products are then summed to form the initial score for a document. </p>
<p>Terms that occur in fewer documents are better indicators of topic, so implementations of this method usually return larger values for rare terms, and smaller values for common terms.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">docFreq</td><td>the number of documents which contain the term </td></tr>
<tr><td class="paramname">numDocs</td><td>the total number of documents in the collection </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a score factor based on the term's document frequency </dd></dl>
<p>Implemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a373cb8d80a99d28e1cfc2a291fb0b8dc">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#aed1d763dd3456f19293d8676d3e9499e">Lucene.Net.Search.SimilarityDelegator</a>.</p>
</div>
</div>
<a class="anchor" id="a9bfd3c3d2722ff351f7c5793f0ece506"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="_phrase_query_8cs.html#a6210369909e0fef392bc63926b45beaf">IDFExplanation</a> Lucene.Net.Search.Similarity.IdfExplain </td>
<td>(</td>
<td class="paramtype"><a class="el" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a>&#160;</td>
<td class="paramname"><em>term</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html">Searcher</a>&#160;</td>
<td class="paramname"><em>searcher</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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a score factor for a simple term and returns an explanation for that score factor. </p>
<p>The default implementation uses:</p>
<p><code> idf(searcher.docFreq(term), searcher.MaxDoc); </code></p>
<p>Note that <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html#a1dbf54a65f094a455860a8119cbed4e0">Searcher.MaxDoc</a> is used instead of <a class="el" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#a300ecbc61b021d9ae600e1b00c61a851" title="Returns the number of documents in this index. ">Lucene.Net.Index.IndexReader.NumDocs()</a> because it is proportional to <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html#a1a9a74d509b4531b52c11d6678c50259" title="Expert: Returns the number of documents containing term. Called by search code to compute term weight...">Searcher.DocFreq(Term)</a> , i.e., when one is inaccurate, so is the other, and in the same direction.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">term</td><td>the term in question </td></tr>
<tr><td class="paramname">searcher</td><td>the document collection being searched </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an IDFExplain object that includes both an idf score factor and an explanation for the term. </dd></dl>
<p>&lt;throws&gt; IOException &lt;/throws&gt; </p>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00582">582</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="acaefd61909f04a234baaec33d387e64e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="_phrase_query_8cs.html#a6210369909e0fef392bc63926b45beaf">IDFExplanation</a> Lucene.Net.Search.Similarity.IdfExplain </td>
<td>(</td>
<td class="paramtype">ICollection&lt; <a class="el" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a> &gt;&#160;</td>
<td class="paramname"><em>terms</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html">Searcher</a>&#160;</td>
<td class="paramname"><em>searcher</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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a score factor for a phrase. </p>
<p>The default implementation sums the idf factor for each term in the phrase.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">terms</td><td>the terms in the phrase </td></tr>
<tr><td class="paramname">searcher</td><td>the document collection being searched </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an IDFExplain object that includes both an idf score factor for the phrase and an explanation for each term. </dd></dl>
<p>&lt;throws&gt; IOException &lt;/throws&gt; </p>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00606">606</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a3cb3ee80bc11c2d608ce673ead8bfcba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract float Lucene.Net.Search.Similarity.LengthNorm </td>
<td>(</td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>fieldName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>numTokens</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">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the normalization value for a field given the total number of terms contained in a field. These values, together with field boosts, are stored in an index and multipled into scores for hits on each field by the search code. </p>
<p>Matches in longer fields are less precise, so implementations of this method usually return smaller values when <code>numTokens</code> is large, and larger values when <code>numTokens</code> is small.</p>
<p>Note that the return values are computed under Lucene.Net.Index.IndexWriter.AddDocument(Lucene.Net.Documents.Document) and then stored using <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#abb8c94a5e3079a47004af1bf117af1de" title="Encodes a normalization factor for storage in an index.">EncodeNorm(float)</a>. Thus they have limited precision, and documents must be re-indexed if this method is altered.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fieldName</td><td>the name of the field </td></tr>
<tr><td class="paramname">numTokens</td><td>the total number of tokens contained in fields named <em>fieldName</em> of <em>doc</em>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><p class="startdd">a normalization factor for hits on this field of this document</p>
<p class="enddd"></p>
</dd></dl>
<dl class="section see"><dt>See Also</dt><dd>Lucene.Net.Documents.AbstractField.Boost</dd></dl>
<p>Implemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#abf30485ea3b8d9b662d2159b2be79fee">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#a3d802d4a81598d445aa7491a2afb1a73">Lucene.Net.Search.SimilarityDelegator</a>.</p>
</div>
</div>
<a class="anchor" id="a941d4d16d71b59858e360de8c2d59371"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract float Lucene.Net.Search.Similarity.QueryNorm </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>sumOfSquaredWeights</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the normalization value for a query given the sum of the squared weights of each of the query terms. This value is then multipled into the weight of each query term. </p>
<p>This does not affect ranking, but rather just attempts to make scores from different queries comparable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sumOfSquaredWeights</td><td>the sum of the squares of query term weights </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a normalization factor for query weights </dd></dl>
<p>Implemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#aac12c840f91004aa02461da448b42f2d">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#a34679dbcd3bccf08609065b1c828a082">Lucene.Net.Search.SimilarityDelegator</a>.</p>
</div>
</div>
<a class="anchor" id="a5973cd115b539d631e994fdf86021439"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual float Lucene.Net.Search.Similarity.ScorePayload </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>docId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">System.String&#160;</td>
<td class="paramname"><em>fieldName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte[]&#160;</td>
<td class="paramname"><em>payload</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>length</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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate a scoring factor based on the data in the payload. Overriding implementations are responsible for interpreting what is in the payload. <a class="el" href="namespace_lucene.html">Lucene</a> makes no assumptions about what is in the byte array. The default implementation returns 1. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">docId</td><td>The docId currently being scored. If this value is <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a7179ebc4356c719c153df4f93f56800e">NO_DOC_ID_PROVIDED</a>, then it should be assumed that the PayloadQuery implementation does not provide document information </td></tr>
<tr><td class="paramname">fieldName</td><td>The fieldName of the term this payload belongs to </td></tr>
<tr><td class="paramname">start</td><td>The start position of the payload </td></tr>
<tr><td class="paramname">end</td><td>The end position of the payload </td></tr>
<tr><td class="paramname">payload</td><td>The payload byte array to be scored </td></tr>
<tr><td class="paramname">offset</td><td>The offset into the payload array </td></tr>
<tr><td class="paramname">length</td><td>The length in the array </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><p class="startdd">An implementation dependent float to be used as a scoring factor</p>
<p class="enddd"></p>
</dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00684">684</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="a58d84da69da3185f4c2548d80d02fd26"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract float Lucene.Net.Search.Similarity.SloppyFreq </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>distance</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the amount of a sloppy phrase match, based on an edit distance. This value is summed for each sloppy phrase match in a document to form the frequency that is passed to <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ad75051e13336926fdc23ed04958d1409" title="Computes a score factor based on a term or phrase&#39;s frequency in a document. This value is multiplied...">Tf(float)</a>. </p>
<p>A phrase match with a small edit distance to a document passage more closely matches the document, so implementations of this method usually return larger values when the edit distance is small and smaller values when it is large.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_phrase_query.html#ab0b42bf7038acb8464c7a31de6c1fb22" title="Sets the number of other words permitted between words in query phrase. If zero, then this is an exac...">PhraseQuery.Slop</a></dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">distance</td><td>the edit distance of this sloppy phrase match </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the frequency increment for this match </dd></dl>
<p>Implemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a38309093c061fe7b92edab56091df6ca">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#a0e09ab33cd5c4b39b1ceb7668692f2d2">Lucene.Net.Search.SimilarityDelegator</a>.</p>
</div>
</div>
<a class="anchor" id="ab08940fe117d42b282f342a09b6beba9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual float Lucene.Net.Search.Similarity.Tf </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>freq</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a score factor based on a term or phrase's frequency in a document. This value is multiplied by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a6cb62d3308ca06f13600cb714a8e1d73" title="Computes a score factor based on a term&#39;s document frequency (the number of documents which contain t...">Idf(int, int)</a> factor for each term in the query and these products are then summed to form the initial score for a document. </p>
<p>Terms and phrases repeated in a document indicate the topic of the document, so implementations of this method usually return larger values when <code>freq</code> is large, and smaller values when <code>freq</code> is small.</p>
<p>The default implementation calls <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#ad75051e13336926fdc23ed04958d1409" title="Computes a score factor based on a term or phrase&#39;s frequency in a document. This value is multiplied...">Tf(float)</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">freq</td><td>the frequency of a term within a document </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a score factor based on a term's within-document frequency </dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00521">521</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<a class="anchor" id="ad75051e13336926fdc23ed04958d1409"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract float Lucene.Net.Search.Similarity.Tf </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>freq</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a score factor based on a term or phrase's frequency in a document. This value is multiplied by the <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html#a6cb62d3308ca06f13600cb714a8e1d73" title="Computes a score factor based on a term&#39;s document frequency (the number of documents which contain t...">Idf(int, int)</a> factor for each term in the query and these products are then summed to form the initial score for a document. </p>
<p>Terms and phrases repeated in a document indicate the topic of the document, so implementations of this method usually return larger values when <code>freq</code> is large, and smaller values when <code>freq</code> is small.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">freq</td><td>the frequency of a term within a document </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a score factor based on a term's within-document frequency </dd></dl>
<p>Implemented in <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html#a23cb836777a596d02d86de28e723e826">Lucene.Net.Search.DefaultSimilarity</a>, and <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html#af81e4f7ca48c67bbe969fd00ac586311">Lucene.Net.Search.SimilarityDelegator</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a7179ebc4356c719c153df4f93f56800e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int Lucene.Net.Search.Similarity.NO_DOC_ID_PROVIDED = - 1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00381">381</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<h2 class="groupheader">Property Documentation</h2>
<a class="anchor" id="a374d891e671bbaca17d776be505bc944"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html">Similarity</a> Lucene.Net.Search.Similarity.Default</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">get</span><span class="mlabel">set</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets or sets the default <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> implementation used by indexing and search code. This is initially an instance of <a class="el" href="class_lucene_1_1_net_1_1_search_1_1_default_similarity.html" title="Expert: Default scoring implementation. ">DefaultSimilarity</a>. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html#a55a253cf1562ad7f1779d6f76f84c2de" title="Expert: Gets or Sets the Similarity implementation used by this Searcher.">Searcher.Similarity</a></dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="class_lucene_1_1_net_1_1_index_1_1_index_writer.html#a5695d47fe4b1e23ad339fd3e543e3a86" title="Expert: Set the Similarity implementation used by this IndexWriter. ">Lucene.Net.Index.IndexWriter.SetSimilarity(Similarity)</a></dd></dl>
<p>Definition at line <a class="el" href="_similarity_8cs_source.html#l00392">392</a> of file <a class="el" href="_similarity_8cs_source.html">Similarity.cs</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>core/Search/<a class="el" href="_similarity_8cs_source.html">Similarity.cs</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 3 2013 02:12:57 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>