blob: cbcaa8289912e88e59eb459c9d2b198a5e6a1d5d [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: contrib/WordNet/SynExpand/SynExpand.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_3a8d697be1e2feab9f01acc78e9570fb.html">contrib</a></li><li class="navelem"><a class="el" href="dir_bbb45392d97126327344e914830e49aa.html">WordNet</a></li><li class="navelem"><a class="el" href="dir_cc217e58e1d13575859bfa84e06d82ce.html">SynExpand</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">SynExpand.cs</div> </div>
</div><!--header-->
<div class="contents">
<a href="_syn_expand_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * this work for additional information regarding copyright ownership.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * (the &quot;License&quot;); you may not use this file except in compliance with</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * limitations under the License.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">using</span> System;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">using</span> System.Collections.Generic;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">using</span> System.IO;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">using</span> System.Linq;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">using</span> Lucene.Net.Analysis;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">using</span> Lucene.Net.Analysis.Standard;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">using</span> Lucene.Net.Analysis.Tokenattributes;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">using</span> Lucene.Net.Index;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">using</span> Lucene.Net.Search;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">using</span> Lucene.Net.Store;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="namespace_world_net_1_1_net.html"> 29</a></span>&#160;<span class="keyword">namespace </span>WorldNet.Net</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="class_world_net_1_1_net_1_1_syn_expand.html"> 38</a></span>&#160; <span class="keyword">public</span> sealed <span class="keyword">class </span><a class="code" href="class_world_net_1_1_net_1_1_syn_expand.html" title="Expand a query by looking up synonyms for every term. You need to invoke Syns2Index first to build th...">SynExpand</a></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">static</span> List&lt;String&gt; already;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">private</span> <span class="keyword">static</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> tmp;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; [STAThread]</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="class_world_net_1_1_net_1_1_syn_expand.html#a72c02703df2aea4ed8b141f63c4eea69"> 54</a></span>&#160; <span class="keyword">public</span> <span class="keyword">static</span> <span class="keywordtype">void</span> Main(String[] args)</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="keywordflow">if</span> (args.Length != 2)</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; Console.Out.WriteLine(typeof(<a class="code" href="class_world_net_1_1_net_1_1_syn_expand.html" title="Expand a query by looking up synonyms for every term. You need to invoke Syns2Index first to build th...">SynExpand</a>) + <span class="stringliteral">&quot; &lt;index path&gt; &lt;query&gt;&quot;</span>);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span>;</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; var directory = <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html" title=" Base class for Directory implementations that store index files in the file system. There are currently three core subclasses:">FSDirectory</a>.<a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a33ea2927779ca535c4cb90ea0dc76cfa" title="Creates an FSDirectory instance, trying to pick the best implementation given the current environment...">Open</a>(<span class="keyword">new</span> DirectoryInfo(args[0]));</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; var searcher = <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a507bc55818dbcde9964f629543370b6f">IndexSearcher</a>(directory, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; String query = args[1];</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">string</span> field = <span class="stringliteral">&quot;contents&quot;</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</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> q = Expand(query, searcher, <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a95c37490d2ac2832fbd090844a6c8d23">StandardAnalyzer</a>(Lucene.Net.Util.Version.LUCENE_CURRENT), field, 0.9f);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; System.Console.Out.WriteLine(<span class="stringliteral">&quot;Query: &quot;</span> + q.<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="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; searcher.Close();</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; directory.Close();</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="class_world_net_1_1_net_1_1_syn_expand.html#aaeaab182949af969bd8edd56adbfef4a"> 85</a></span>&#160; <span class="keyword">public</span> <span class="keyword">static</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> Expand(String query,</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <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> syns,</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_analyzer.html" title="An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extracting index...">Analyzer</a> a,</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; String field,</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">float</span> boost)</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; already = <span class="keyword">new</span> List&lt;String&gt;(); <span class="comment">// avoid dups </span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; var top = <span class="keyword">new</span> List&lt;String&gt;(); <span class="comment">// needs to be separately listed..</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (field == null)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; field = <span class="stringliteral">&quot;contents&quot;</span>;</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; <span class="keywordflow">if</span> (a == null)</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; a = <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a95c37490d2ac2832fbd090844a6c8d23">StandardAnalyzer</a>(Lucene.Net.Util.Version.LUCENE_CURRENT);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// [1] Parse query into separate words so that when we expand we can avoid dups</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; var ts = a.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_analyzer.html#ac031bae47f64e6bbe2117c991996f5fc" title="Creates a TokenStream which tokenizes all the text in the provided Reader. Must be able to handle nul...">TokenStream</a>(field, <span class="keyword">new</span> StringReader(query));</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; var termAtt = ts.AddAttribute&lt;<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_term_attribute.html" title="The term text of a Token.">TermAttribute</a>&gt;();</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; <span class="keywordflow">while</span> (ts.IncrementToken())</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; var word = termAtt.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_term_attribute.html#a71691a2acfd8af5f25adb4782e9eaddb" title="Returns the Token&#39;s term text.">Term</a>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (!already.Contains(word))</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; already.Add(word);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; top.Add(word);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; tmp = <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#ae2b9948961aeea34f9c4e4955536f433">BooleanQuery</a>();</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// [2] form query</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; System.Collections.IEnumerator it = top.GetEnumerator();</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">while</span> (it.MoveNext())</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// [2a] add to level words in</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; var word = (String) it.Current;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; var tq = <span class="keyword">new</span> <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_term_query.html" title="A Query that matches documents containing a term. This may be combined with other terms with a Boolea...">TermQuery</a>(<span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a>(field, word));</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; tmp.Add(tq, <a class="code" href="namespace_lucene_1_1_net_1_1_search.html#a99a7442e50a0ff52bf00ddb319eb9d34">Occur</a>.SHOULD);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; var c = <span class="keyword">new</span> CollectorImpl(field, boost);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; syns.<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_searcher.html#a4fa776037fe41a7fccc3c9d32057c258" title="Search implementation with arbitrary sorting. Finds the top n hits for query, applying filter if non-...">Search</a>(<span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a13f0b68c1e7c8f509c3a0be1441df5d9">TermQuery</a>(<span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a>(<a class="code" href="class_world_net_1_1_net_1_1_syn_expand_1_1_syns2_index.html" title="From project WordNet.Net.Syns2Index ">Syns2Index</a>.<a class="code" href="class_world_net_1_1_net_1_1_syn_expand_1_1_syns2_index.html#af3e80be7dc1fffbf351c730b67ce0993">F_WORD</a>, word)), c);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</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; <span class="keywordflow">return</span> tmp;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="code" href="class_world_net_1_1_net_1_1_syn_expand_1_1_syns2_index.html"> 136</a></span>&#160; <span class="keyword">public</span> <span class="keyword">class </span><a class="code" href="class_world_net_1_1_net_1_1_syn_expand_1_1_syns2_index.html" title="From project WordNet.Net.Syns2Index ">Syns2Index</a></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="code" href="class_world_net_1_1_net_1_1_syn_expand_1_1_syns2_index.html#aed3af3a2eb070e6e6582d7f42db6a77f"> 139</a></span>&#160; <span class="keyword">public</span> <span class="keyword">const</span> String F_SYN = <span class="stringliteral">&quot;syn&quot;</span>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="code" href="class_world_net_1_1_net_1_1_syn_expand_1_1_syns2_index.html#af3e80be7dc1fffbf351c730b67ce0993"> 142</a></span>&#160; <span class="keyword">public</span> <span class="keyword">const</span> String F_WORD = <span class="stringliteral">&quot;word&quot;</span>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">internal</span> sealed <span class="keyword">class </span>CollectorImpl : <a class="code" href="class_lucene_1_1_net_1_1_search_1_1_collector.html" title="Expert: Collectors are primarily meant to be used to gather raw results from a search, and implement sorting or custom result filtering, collation, etc. ">Collector</a></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">private</span> <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html" title="IndexReader is an abstract class, providing an interface for accessing an index. Search of an index i...">IndexReader</a> reader;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">private</span> readonly <span class="keywordtype">string</span> field;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">private</span> readonly <span class="keywordtype">float</span> boost;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">public</span> CollectorImpl(<span class="keywordtype">string</span> field, <span class="keywordtype">float</span> boost)</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; this.field = field;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; this.boost = boost;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetScorer(<a class="code" href="class_lucene_1_1_net_1_1_search_1_1_scorer.html" title="Expert: Common scoring functionality for different types of queries.">Scorer</a> scorer)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// Ignore</span></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="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Collect(<span class="keywordtype">int</span> doc)</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; var d = reader.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_index_reader.html#ae5a8698ada40868908ea27f502337ee2" title="Returns the stored fields of the nth Document in this index. NOTE: for performance reasons...">Document</a>(doc);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; var values = d.GetValues(Syns2Index.F_SYN);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">foreach</span> (var syn <span class="keywordflow">in</span> values.Where(syn =&gt; !already.Contains(syn)))</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; already.Add(syn);</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; var tq = <span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a13f0b68c1e7c8f509c3a0be1441df5d9">TermQuery</a>(<span class="keyword">new</span> <a class="code" href="_more_like_this_8cs.html#a8797eb30ce21b31829d3e3a43a20e3b9">Term</a>(field, syn));</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (boost &gt; 0) <span class="comment">// else keep normal 1.0</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; tq.Boost = boost;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; tmp.Add(tq, <a class="code" href="namespace_lucene_1_1_net_1_1_search.html#a99a7442e50a0ff52bf00ddb319eb9d34">Occur</a>.SHOULD);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> SetNextReader(<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> docBase)</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; this.reader = reader;</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;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> AcceptsDocsOutOfOrder</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">get</span> { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</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:44 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>