blob: ea868806549548f396ec964b5c5bd68a70d5a424 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3"/>
<title>Lucene.Net: core/Search/BooleanQuery.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="lucene-net-icon-128x128.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Lucene.Net
&#160;<span id="projectnumber">3.0.3</span>
</div>
<div id="projectbrief">Lucene.Net is a .NET port of the Java Lucene Indexing Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="Index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Packages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Properties</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1efe588324fc547683bba4a3f1bac847.html">core</a></li><li class="navelem"><a class="el" href="dir_56f9b3c34a852b92179da152ee78b823.html">Search</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">BooleanQuery.cs</div> </div>
</div><!--header-->
<div class="contents">
<a href="_boolean_query_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * this work for additional information regarding copyright ownership.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * (the &quot;License&quot;); you may not use this file except in compliance with</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * limitations under the License.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">using</span> System;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">using</span> System.Collections;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">using</span> Lucene.Net.Index;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">using</span> Lucene.Net.Support;</div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="code" href="_boolean_query_8cs.html#a2a6914ea10bbe06764856e29e5674e66"> 22</a></span>&#160;<span class="keyword">using</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> = Lucene.Net.Index.IndexReader;</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="_boolean_query_8cs.html#aeff40eaf34e2b78f761d305f48b95699"> 23</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_boolean_query_8cs.html#aeff40eaf34e2b78f761d305f48b95699">ToStringUtils</a> = Lucene.Net.Util.ToStringUtils;</div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="_boolean_query_8cs.html#a465cf9485f9f5eca4050230ebdbb8ed4"> 24</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_boolean_query_8cs.html#a465cf9485f9f5eca4050230ebdbb8ed4">Occur</a> = Lucene.Net.Search.Occur;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span>Lucene.Net.Search</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; [Serializable]</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html"> 34</a></span>&#160; <span class="keyword">public</span> <span class="keyword">class </span><a class="code" 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. ">BooleanQuery</a> : <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html" title="The abstract base class for queries. Instantiable subclasses are: TermQuery MultiTermQuery BooleanQ...">Query</a>, System.Collections.Generic.IEnumerable&lt;BooleanClause&gt;, System.ICloneable</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; [Serializable]</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">private</span> <span class="keyword">class </span>AnonymousClassSimilarityDelegator:<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_similarity_delegator.html" title="Expert: Delegating scoring implementation. Useful in Query.GetSimilarity(Searcher) implementations...">SimilarityDelegator</a></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">private</span> <span class="keywordtype">void</span> InitBlock(<a class="code" 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. ">BooleanQuery</a> enclosingInstance)</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; this.enclosingInstance = enclosingInstance;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">private</span> <a class="code" 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. ">BooleanQuery</a> enclosingInstance;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">public</span> <a class="code" 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. ">BooleanQuery</a> Enclosing_Instance</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> enclosingInstance;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">internal</span> AnonymousClassSimilarityDelegator(<a class="code" 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. ">BooleanQuery</a> enclosingInstance, Lucene.Net.Search.Similarity Param1):base(Param1)</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">float</span> Coord(<span class="keywordtype">int</span> overlap, <span class="keywordtype">int</span> maxOverlap)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> 1.0f;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">private</span> <span class="keyword">static</span> <span class="keywordtype">int</span> _maxClauses = 1024;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; [Serializable]</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query_1_1_too_many_clauses.html"> 70</a></span>&#160; <span class="keyword">public</span> <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query_1_1_too_many_clauses.html" title="Thrown when an attempt is made to add more than MaxClauseCount clauses. This typically happens if a P...">TooManyClauses</a>:System.SystemException</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> System.String Message</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query_1_1_too_many_clauses.html#a063629832f7063852dd43e9ef6775862"> 73</a></span>&#160; {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;maxClauseCount is set to &quot;</span> + Lucene.Net.Search.BooleanQuery._maxClauses;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">public</span> <span class="keyword">static</span> <span class="keywordtype">int</span> MaxClauseCount</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#aed4cadbd29766e321ff35a244a339a5c"> 87</a></span>&#160; {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> _maxClauses; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">set</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (value &lt; 1)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentException(<span class="stringliteral">&quot;maxClauseCount must be &gt;= 1&quot;</span>);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; _maxClauses = value;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">private</span> EquatableList&lt;BooleanClause&gt; clauses = <span class="keyword">new</span> EquatableList&lt;BooleanClause&gt;();</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">private</span> <span class="keywordtype">bool</span> disableCoord;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a968b11ddc482cc691a4c794b9511e244"> 101</a></span>&#160; <span class="keyword">public</span> <a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a>()</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a20ac1c991b3b24bdfd67aa775fdc6b86"> 115</a></span>&#160; <span class="keyword">public</span> <a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a>(<span class="keywordtype">bool</span> disableCoord)</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; this.disableCoord = disableCoord;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a5ece3b9fe656b91145ee5fbe059bbc3b"> 125</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsCoordDisabled()</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> disableCoord;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="comment">// Implement coord disabling.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// Inherit javadoc.</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a98dd03f61db1ca89782f21372925e546"> 132</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> GetSimilarity(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html" title="An abstract base class for search implementations. Implements the main search methods.">Searcher</a> searcher)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_similarity.html" title="Expert: Scoring API. Subclasses implement search scoring.">Similarity</a> result = base.GetSimilarity(searcher);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (disableCoord)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// disable coord as requested</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; result = <span class="keyword">new</span> AnonymousClassSimilarityDelegator(<span class="keyword">this</span>, result);</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keywordtype">int</span> minNrShouldMatch = 0;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">int</span> MinimumNumberShouldMatch</div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#ac8185ddae26127e7db6bb5cffbfa05d7"> 160</a></span>&#160; {</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">set</span> { this.minNrShouldMatch = value; }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> minNrShouldMatch; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
<div class="line"><a name="l00171"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#abb13cef2c294c50e9224afd45239bfb5"> 171</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Add(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html" title="The abstract base class for queries. Instantiable subclasses are: TermQuery MultiTermQuery BooleanQ...">Query</a> query, <a class="code" href="namespace_lucene_1_1_net_1_1_search.html#a99a7442e50a0ff52bf00ddb319eb9d34">Occur</a> occur)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; Add(<span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a>(query, occur));</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#aa1e4c4a6b4ec18604190d85dfbb51c02"> 180</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Add(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a> clause)</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (clauses.Count &gt;= _maxClauses)</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query_1_1_too_many_clauses.html" title="Thrown when an attempt is made to add more than MaxClauseCount clauses. This typically happens if a P...">TooManyClauses</a>();</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; clauses.Add(clause);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#ace3873382d73bf7babc31fd2d5268de0"> 189</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a>[] GetClauses()</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> clauses.ToArray();</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> System.Collections.Generic.List&lt;<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a>&gt; Clauses</div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#aa2fc13d636dfe05e51fe9fe173c0022b"> 196</a></span>&#160; {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> clauses; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#ab245a432e78a123517fd20d625f7ce4c"> 204</a></span>&#160; <span class="keyword">public</span> System.Collections.Generic.IEnumerator&lt;<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a>&gt; GetEnumerator()</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> clauses.GetEnumerator();</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; [Serializable]</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keyword">class </span>BooleanWeight:<a class="code" 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...">Weight</a></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">private</span> <span class="keywordtype">void</span> InitBlock(<a class="code" 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. ">BooleanQuery</a> enclosingInstance)</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; this.enclosingInstance = enclosingInstance;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">private</span> <a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a> enclosingInstance;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">public</span> <a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a> Enclosing_Instance</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">get</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> enclosingInstance;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> <a class="code" href="_documents_writer_8cs.html#a5431a3a4edd067eec50ca39b5ea99c31">Similarity</a> similarity;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">protected</span> <span class="keyword">internal</span> System.Collections.Generic.List&lt;<a class="code" href="_documents_writer_8cs.html#af0d29c976e72f83236dc8d0fa23aaf32">Weight</a>&gt; weights;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">public</span> BooleanWeight(<a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a> enclosingInstance, <a class="code" href="_document_8cs.html#a4be53b8845ef8ff2a91031c18774a62c">Searcher</a> searcher)</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; InitBlock(enclosingInstance);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; this.similarity = Enclosing_Instance.GetSimilarity(searcher);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; weights = <span class="keyword">new</span> System.Collections.Generic.List&lt;<a class="code" href="_documents_writer_8cs.html#af0d29c976e72f83236dc8d0fa23aaf32">Weight</a>&gt;(Enclosing_Instance.clauses.Count);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Enclosing_Instance.clauses.Count; i++)</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; weights.Add(Enclosing_Instance.clauses[i].Query.CreateWeight(searcher));</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="_more_like_this_8cs.html#accbc7c5687907350ba0e2681b41e1b0d">Query</a> <a class="code" href="_more_like_this_8cs.html#accbc7c5687907350ba0e2681b41e1b0d">Query</a></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> Enclosing_Instance; }</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">float</span> Value</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> Enclosing_Instance.Boost; }</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">float</span> GetSumOfSquaredWeights()</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; weights.Count; i++)</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// call sumOfSquaredWeights for all clauses in case of side effects</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">float</span> s = weights[i].GetSumOfSquaredWeights(); <span class="comment">// sum sub weights</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (!Enclosing_Instance.clauses[i].IsProhibited)</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// only add to sum for non-prohibited clauses</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; sum += s;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; sum *= Enclosing_Instance.Boost*Enclosing_Instance.Boost; <span class="comment">// boost each sub-weight</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> sum;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Normalize(<span class="keywordtype">float</span> norm)</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; norm *= Enclosing_Instance.Boost; <span class="comment">// incorporate boost</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">foreach</span> (<a class="code" href="_documents_writer_8cs.html#af0d29c976e72f83236dc8d0fa23aaf32">Weight</a> w <span class="keywordflow">in</span> weights)</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// normalize all clauses, (even if prohibited in case of side affects)</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; w.Normalize(norm);</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; </div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a> Explain(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader, <span class="keywordtype">int</span> doc)</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">int</span> minShouldMatch = Enclosing_Instance.MinimumNumberShouldMatch;</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="_custom_score_query_8cs.html#aaff36a95cdad7bc1affaff3241d83f90">ComplexExplanation</a> sumExpl = <span class="keyword">new</span> <a class="code" href="_custom_score_query_8cs.html#aaff36a95cdad7bc1affaff3241d83f90">ComplexExplanation</a>();</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; sumExpl.Description = <span class="stringliteral">&quot;sum of:&quot;</span>;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordtype">int</span> coord = 0;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">int</span> maxCoord = 0;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">bool</span> fail = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordtype">int</span> shouldMatchCount = 0;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; System.Collections.Generic.IEnumerator&lt;<a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a>&gt; cIter = Enclosing_Instance.clauses.GetEnumerator();</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">for</span> (System.Collections.Generic.IEnumerator&lt;<a class="code" href="_documents_writer_8cs.html#af0d29c976e72f83236dc8d0fa23aaf32">Weight</a>&gt; wIter = weights.GetEnumerator(); wIter.MoveNext(); )</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; cIter.MoveNext();</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="_documents_writer_8cs.html#af0d29c976e72f83236dc8d0fa23aaf32">Weight</a> w = wIter.Current;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a> c = cIter.Current;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (w.Scorer(reader, <span class="keyword">true</span>, <span class="keyword">true</span>) == null)</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a> e = w.Explain(reader, doc);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span> (!c.IsProhibited)</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; maxCoord++;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (e.IsMatch)</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (!c.IsProhibited)</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; sumExpl.AddDetail(e);</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; sum += e.Value;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; coord++;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a> r = <span class="keyword">new</span> <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a>(0.0f, <span class="stringliteral">&quot;match on prohibited clause (&quot;</span> + c.Query.ToString() + <span class="stringliteral">&quot;)&quot;</span>);</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; r.AddDetail(e);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; sumExpl.AddDetail(r);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; fail = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (c.Occur == <a class="code" href="_boolean_query_8cs.html#a465cf9485f9f5eca4050230ebdbb8ed4">Occur</a>.SHOULD)</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; shouldMatchCount++;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c.IsRequired)</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a> r = <span class="keyword">new</span> <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a>(0.0f, <span class="stringliteral">&quot;no match on required clause (&quot;</span> + c.Query.ToString() + <span class="stringliteral">&quot;)&quot;</span>);</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; r.AddDetail(e);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; sumExpl.AddDetail(r);</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; fail = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (fail)</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; System.Boolean tempAux = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; sumExpl.Match = tempAux;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; sumExpl.Value = 0.0f;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; sumExpl.Description = <span class="stringliteral">&quot;Failure to meet condition(s) of required/prohibited clause(s)&quot;</span>;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> sumExpl;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (shouldMatchCount &lt; minShouldMatch)</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; System.Boolean tempAux2 = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; sumExpl.Match = tempAux2;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; sumExpl.Value = 0.0f;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; sumExpl.Description = <span class="stringliteral">&quot;Failure to match minimum number &quot;</span> + <span class="stringliteral">&quot;of optional clauses: &quot;</span> + minShouldMatch;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> sumExpl;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; </div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; sumExpl.Match = 0 &lt; coord?<span class="keyword">true</span>:<span class="keyword">false</span>;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; sumExpl.Value = sum;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordtype">float</span> coordFactor = similarity.Coord(coord, maxCoord);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (coordFactor == 1.0f)</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">// coord is no-op</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> sumExpl;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// eliminate wrapper</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="_custom_score_query_8cs.html#aaff36a95cdad7bc1affaff3241d83f90">ComplexExplanation</a> result = <span class="keyword">new</span> <a class="code" href="_custom_score_query_8cs.html#aaff36a95cdad7bc1affaff3241d83f90">ComplexExplanation</a>(sumExpl.IsMatch, sum * coordFactor, <span class="stringliteral">&quot;product of:&quot;</span>);</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; result.AddDetail(sumExpl);</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; result.AddDetail(<span class="keyword">new</span> <a class="code" href="_custom_score_query_8cs.html#aea5b3dcb7c8a52294feb57dcaa878033">Explanation</a>(coordFactor, <span class="stringliteral">&quot;coord(&quot;</span> + coord + <span class="stringliteral">&quot;/&quot;</span> + maxCoord + <span class="stringliteral">&quot;)&quot;</span>));</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="_documents_writer_8cs.html#a83f1a9bf052559c9fc4b5dc2c3d490f1">Scorer</a> <a class="code" href="_documents_writer_8cs.html#a83f1a9bf052559c9fc4b5dc2c3d490f1">Scorer</a>(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader, <span class="keywordtype">bool</span> scoreDocsInOrder, <span class="keywordtype">bool</span> topScorer)</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; var required = <span class="keyword">new</span> System.Collections.Generic.List&lt;<a class="code" href="_documents_writer_8cs.html#a83f1a9bf052559c9fc4b5dc2c3d490f1">Scorer</a>&gt;();</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; var prohibited = <span class="keyword">new</span> System.Collections.Generic.List&lt;<a class="code" href="_documents_writer_8cs.html#a83f1a9bf052559c9fc4b5dc2c3d490f1">Scorer</a>&gt;();</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; var optional = <span class="keyword">new</span> System.Collections.Generic.List&lt;<a class="code" href="_documents_writer_8cs.html#a83f1a9bf052559c9fc4b5dc2c3d490f1">Scorer</a>&gt;();</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; System.Collections.Generic.IEnumerator&lt;<a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a>&gt; cIter = Enclosing_Instance.clauses.GetEnumerator();</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">foreach</span> (<a class="code" href="_documents_writer_8cs.html#af0d29c976e72f83236dc8d0fa23aaf32">Weight</a> w <span class="keywordflow">in</span> weights)</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; cIter.MoveNext();</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a> c = (<a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a>) cIter.Current;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="_documents_writer_8cs.html#a83f1a9bf052559c9fc4b5dc2c3d490f1">Scorer</a> subScorer = w.Scorer(reader, <span class="keyword">true</span>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (subScorer == null)</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (c.IsRequired)</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> null;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c.IsRequired)</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; required.Add(subScorer);</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c.IsProhibited)</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; prohibited.Add(subScorer);</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; optional.Add(subScorer);</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; </div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="comment">// Check if we can return a BooleanScorer</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span> (!scoreDocsInOrder &amp;&amp; topScorer &amp;&amp; required.Count == 0 &amp;&amp; prohibited.Count &lt; 32)</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> BooleanScorer(similarity, Enclosing_Instance.minNrShouldMatch, optional, prohibited);</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (required.Count == 0 &amp;&amp; optional.Count == 0)</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// no required and optional clauses.</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> null;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (optional.Count &lt; Enclosing_Instance.minNrShouldMatch)</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="comment">// either &gt;1 req scorer, or there are 0 req scorers and at least 1</span></div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="comment">// optional scorer. Therefore if there are not enough optional scorers</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">// no documents will be matched by the query</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> null;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// Return a BooleanScorer2</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> BooleanScorer2(similarity, Enclosing_Instance.minNrShouldMatch, required, prohibited, optional);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> GetScoresDocsOutOfOrder()</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordtype">int</span> numProhibited = 0;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">foreach</span> (<a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a> c <span class="keywordflow">in</span> Enclosing_Instance.clauses)</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (c.IsRequired)</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// BS2 (in-order) will be used by scorer()</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c.IsProhibited)</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; ++numProhibited;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (numProhibited &gt; 32)</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">// cannot use BS</span></div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment">// scorer() will return an out-of-order scorer if requested.</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; </div>
<div class="line"><a name="l00448"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#addc11fea54fb48785fffad223456e1b2"> 448</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" 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...">Weight</a> CreateWeight(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html" title="An abstract base class for search implementations. Implements the main search methods.">Searcher</a> searcher)</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> BooleanWeight(<span class="keyword">this</span>, searcher);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a4d1bdfb4c49286ee6e788e5e4c243a38"> 453</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html" title="The abstract base class for queries. Instantiable subclasses are: TermQuery MultiTermQuery BooleanQ...">Query</a> Rewrite(<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader)</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (minNrShouldMatch == 0 &amp;&amp; clauses.Count == 1)</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// optimize 1-clause queries</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a> c = clauses[0];</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (!c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#a8732e5a2a1711dad803c623bbff8d803">IsProhibited</a>)</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// just return clause</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html" title="The abstract base class for queries. Instantiable subclasses are: TermQuery MultiTermQuery BooleanQ...">Query</a> query = c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#aa8392a0594e9c756e506e424eb34d269" title="The query whose matching documents are combined by the boolean query.">Query</a>.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a0d78f3423d340cf4ddbeb2db9e13d055" title="Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritt...">Rewrite</a>(reader); <span class="comment">// rewrite first</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (Boost != 1.0f)</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// incorporate boost</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (query == c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#aa8392a0594e9c756e506e424eb34d269" title="The query whose matching documents are combined by the boolean query.">Query</a>)</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">// if rewrite was no-op</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; query = (<a class="code" href="_more_like_this_8cs.html#accbc7c5687907350ba0e2681b41e1b0d">Query</a>) query.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#aa06acccee0ba99acb9f6fea24dff856d" title="Returns a clone of this query. ">Clone</a>(); <span class="comment">// then clone before boost</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; query.<a class="code" 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...">Boost</a> = Boost * query.<a class="code" 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...">Boost</a>;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> query;</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; </div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" 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. ">BooleanQuery</a> clone = null; <span class="comment">// recursively rewrite</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; clauses.Count; i++)</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a> c = clauses[i];</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html" title="The abstract base class for queries. Instantiable subclasses are: TermQuery MultiTermQuery BooleanQ...">Query</a> query = c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#aa8392a0594e9c756e506e424eb34d269" title="The query whose matching documents are combined by the boolean query.">Query</a>.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a0d78f3423d340cf4ddbeb2db9e13d055" title="Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritt...">Rewrite</a>(reader);</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (query != c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#aa8392a0594e9c756e506e424eb34d269" title="The query whose matching documents are combined by the boolean query.">Query</a>)</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">// clause rewrote: must clone</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (clone == null)</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; clone = (<a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a>) this.Clone();</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; clone.clauses[i] = <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a53e74846024ac804f694b882eea1936c">BooleanClause</a>(query, c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#a9221865438d440317e03556afe0fec44">Occur</a>);</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (clone != null)</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> clone; <span class="comment">// some clauses rewrote</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>; <span class="comment">// no clauses rewrote</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// inherit javadoc</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a4cff5397a6e78ea872dd953b7c57517e"> 500</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> ExtractTerms(System.Collections.Generic.ISet&lt;<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_term.html" title="A Term represents a word from text. This is the unit of search. It is composed of two elements...">Term</a>&gt; terms)</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">foreach</span>(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a> clause <span class="keywordflow">in</span> clauses)</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; clause.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#aa8392a0594e9c756e506e424eb34d269" title="The query whose matching documents are combined by the boolean query.">Query</a>.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a9f47bf807320ce75a9096c983ab358d7" title="Expert: adds all terms occuring in this query to the terms set. Only works if this query is in its re...">ExtractTerms</a>(terms);</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
<div class="line"><a name="l00508"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a78eccf9da0598be8ea48dcf2f7f54a6d"> 508</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> System.Object Clone()</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" 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. ">BooleanQuery</a> clone = (<a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a>) base.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a78eccf9da0598be8ea48dcf2f7f54a6d" title="Returns a clone of this query. ">Clone</a>();</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; clone.clauses = (EquatableList&lt;BooleanClause&gt;) this.clauses.Clone();</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">return</span> clone;</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; </div>
<div class="line"><a name="l00516"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a9bb211578aec42b750abe0228897a9d5"> 516</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> System.String ToString(System.String field)</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; System.Text.StringBuilder buffer = <span class="keyword">new</span> System.Text.StringBuilder();</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordtype">bool</span> needParens = (Boost != 1.0) || (MinimumNumberShouldMatch &gt; 0);</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (needParens)</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; buffer.Append(<span class="stringliteral">&quot;(&quot;</span>);</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; </div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; clauses.Count; i++)</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html" title="A clause in a BooleanQuery. ">BooleanClause</a> c = clauses[i];</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">if</span> (c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#a8732e5a2a1711dad803c623bbff8d803">IsProhibited</a>)</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; buffer.Append(<span class="stringliteral">&quot;-&quot;</span>);</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#a130ccad1ee0bfb91c772bc85dd1e5c36">IsRequired</a>)</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; buffer.Append(<span class="stringliteral">&quot;+&quot;</span>);</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html" title="The abstract base class for queries. Instantiable subclasses are: TermQuery MultiTermQuery BooleanQ...">Query</a> subQuery = c.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_clause.html#aa8392a0594e9c756e506e424eb34d269" title="The query whose matching documents are combined by the boolean query.">Query</a>;</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (subQuery != null)</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (subQuery is <a class="code" 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. ">BooleanQuery</a>)</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// wrap sub-bools in parens</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; buffer.Append(<span class="stringliteral">&quot;(&quot;</span>);</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; buffer.Append(subQuery.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a5c948f4230c7d9d1acf3dc38551137d5" title="Prints a query to a string, with field assumed to be the default field and omitted. The representation used is one that is supposed to be readable by QueryParser. However, there are the following limitations: If the query was created by the parser, the printed representation may not be exactly what was parsed. For example, characters that need to be escaped will be represented without the required backslash. Some of the more complicated queries (e.g. span queries) don&#39;t have a representation that can be parsed by QueryParser. ">ToString</a>(field));</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; buffer.Append(<span class="stringliteral">&quot;)&quot;</span>);</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; buffer.Append(subQuery.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a5c948f4230c7d9d1acf3dc38551137d5" title="Prints a query to a string, with field assumed to be the default field and omitted. The representation used is one that is supposed to be readable by QueryParser. However, there are the following limitations: If the query was created by the parser, the printed representation may not be exactly what was parsed. For example, characters that need to be escaped will be represented without the required backslash. Some of the more complicated queries (e.g. span queries) don&#39;t have a representation that can be parsed by QueryParser. ">ToString</a>(field));</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; buffer.Append(<span class="stringliteral">&quot;null&quot;</span>);</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; </div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (i != clauses.Count - 1)</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; buffer.Append(<span class="stringliteral">&quot; &quot;</span>);</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; </div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (needParens)</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; buffer.Append(<span class="stringliteral">&quot;)&quot;</span>);</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; </div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (MinimumNumberShouldMatch &gt; 0)</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; buffer.Append(<span class="charliteral">&#39;~&#39;</span>);</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; buffer.Append(MinimumNumberShouldMatch);</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; </div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span> (Boost != 1.0f)</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; buffer.Append(<a class="code" href="_boolean_query_8cs.html#aeff40eaf34e2b78f761d305f48b95699">ToStringUtils</a>.Boost(Boost));</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> buffer.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_query.html#a5c948f4230c7d9d1acf3dc38551137d5" title="Prints a query to a string, with field assumed to be the default field and omitted. The representation used is one that is supposed to be readable by QueryParser. However, there are the following limitations: If the query was created by the parser, the printed representation may not be exactly what was parsed. For example, characters that need to be escaped will be represented without the required backslash. Some of the more complicated queries (e.g. span queries) don&#39;t have a representation that can be parsed by QueryParser. ">ToString</a>();</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
<div class="line"><a name="l00577"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#a2e817fa0f25c439135693bd50eb7e7fe"> 577</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> Equals(System.Object o)</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (!(o is <a class="code" 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. ">BooleanQuery</a>))</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; BooleanQuery other = (<a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a>)o;</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> (this.Boost == other.<a class="code" 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...">Boost</a>)</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; &amp;&amp; this.clauses.Equals(other.clauses)</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; &amp;&amp; this.MinimumNumberShouldMatch == other.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#ac8185ddae26127e7db6bb5cffbfa05d7" title="Specifies a minimum number of the optional BooleanClauses which must be satisfied.">MinimumNumberShouldMatch</a></div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; &amp;&amp; this.disableCoord == other.disableCoord;</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; </div>
<div class="line"><a name="l00589"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_search_1_1_boolean_query.html#aed94af5862c8b11c20bd2396ff962768"> 589</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> GetHashCode()</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> BitConverter.ToInt32(BitConverter.GetBytes(Boost), 0) ^ clauses.GetHashCode() + MinimumNumberShouldMatch + (disableCoord ? 17 : 0);</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; IEnumerator IEnumerable.GetEnumerator()</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> GetEnumerator();</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 3 2013 02:12:45 for Lucene.Net by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3
</small></address>
</body>
</html>