<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>SQL Server</title><link>http://www.michaelfalconer.co.uk/category/6.aspx</link><description>SQL Server</description><managingEditor>Michael Falconer</managingEditor><dc:language>en-GB</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Michael Falconer</dc:creator><title>.Net helper class for SQL Server Full Text Search</title><link>http://www.michaelfalconer.co.uk/archive/2004/11/10/207.aspx</link><pubDate>Wed, 10 Nov 2004 09:42:00 GMT</pubDate><guid>http://www.michaelfalconer.co.uk/archive/2004/11/10/207.aspx</guid><description>&lt;P&gt;I've made use of SQL Servers ability to run a full text search in a couple of projects recently&amp;nbsp;and wrote a little helper class that takes a typical search phrase and creates the tsql statement that you can then pass into a CONTAINSTABLE clause. Basically it looks either for words separated by a space, or a phrase with quotes around it, or a mixture of both.&lt;/P&gt;
&lt;P&gt;There is one limitation in this implementation; the noise words are hard coded into a string array. It would be better to read in the contents of the noise word file that SQL Server uses, but in some shared hosting arrangements you may not have access to the file.&lt;/P&gt;
&lt;STYLE type=text/css&gt;.cf { font-family: Courier New; font-size: 10pt; color: #000000; background: #ffffff; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt; }.cl { margin: 0px; MARGIN: 0px; }.cln { color: #008080; background: #ffffff; }.cb1 { color: #0000ff; }.cb2 { color: #808080; }.cb3 { color: #008000; }&lt;/STYLE&gt;

&lt;DIV class=cf&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System.Collections;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;namespace&lt;/SPAN&gt;&lt;SPAN&gt; CamelJones.Data.Utils&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Helper object for converting a search string into a&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Full Text Search query, used in a CONTAINSTABLE clause.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;public&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; class&lt;/SPAN&gt;&lt;SPAN&gt; SqlFtsHelper&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #region&lt;/SPAN&gt;&lt;SPAN&gt; Private Members&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; string&lt;/SPAN&gt;&lt;SPAN&gt; _searchPhrase;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; string&lt;/SPAN&gt;&lt;SPAN&gt; _ftsQuery;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN&gt; ArrayList _ignoredWords = &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; ArrayList();&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; string&lt;/SPAN&gt;&lt;SPAN&gt;[] _noiseWords = &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;new&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; string&lt;/SPAN&gt;&lt;SPAN&gt;[] {"about","after","all","also","an","and","another","any","are","as","at","be","because","been","before","being","between","both","but","by","came","can","come","could","did","do","each","for","from","get","got","has","had","he","have","her","here","him","himself","his","how","if","in","into","is","it","like","make","many","me","might","more","most","much","must","my","never","now","of","on","only","or","other","our","out","over","said","same","see","should","since","some","still","such","take","than","that","the","their","them","then","there","these","they","this","those","through","to","too","under","up","very","was","way","we","well","were","what","where","which","while","who","with","would","you","your"};&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #endregion&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #region&lt;/SPAN&gt;&lt;SPAN&gt; Constructors&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Constructor for the SqlFtsHelper object&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;param name="query"&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;The search string that is to be used to create the Full Text Search query&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; SqlFtsHelper(&lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; searchPhrase)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _searchPhrase = searchPhrase;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; BuildFTSQuery();&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #endregion&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #region&lt;/SPAN&gt;&lt;SPAN&gt; Public Methods&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; The query string that was passed in to be used for the Full Text Search&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;public&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; string&lt;/SPAN&gt;&lt;SPAN&gt; SearchPhrase&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;get&lt;/SPAN&gt;&lt;SPAN&gt; { &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; _searchPhrase; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; The T-SQL statement to be used as the contains_search_condition parameter&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; of a CONTAINSTABLE query&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;public&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; string&lt;/SPAN&gt;&lt;SPAN&gt; FTSQuery&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;get&lt;/SPAN&gt;&lt;SPAN&gt; { &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; _ftsQuery; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; An array of any noise words that were included in the search string&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;public&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; object&lt;/SPAN&gt;&lt;SPAN&gt;[] IgnoredWords&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;get&lt;/SPAN&gt;&lt;SPAN&gt; { &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; _ignoredWords.ToArray(); }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #endregion&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #region&lt;/SPAN&gt;&lt;SPAN&gt; Private Methods&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Builds the Full Text Search query&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; void&lt;/SPAN&gt;&lt;SPAN&gt; BuildFTSQuery()&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _ftsQuery = "";&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; cleanQuery = _searchPhrase;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Strip out comments, wildcards&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Replace("--","");&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Replace("*","");&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Replace("%","");&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Rather than simply split the string, walk&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// through it looking for phrases or individual&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// words&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Trim();&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;while&lt;/SPAN&gt;&lt;SPAN&gt;(cleanQuery.Length&amp;gt;0)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// If this is the only word&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(cleanQuery.IndexOf('"')==-1 &amp;amp;&amp;amp; cleanQuery.IndexOf(' ')==-1)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(!CheckNoiseWord(cleanQuery))&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FTSAddWord(cleanQuery);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;break&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Get the next word/phrase&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;96&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(!cleanQuery.StartsWith("\""))&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;97&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;98&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Get the word from the search string&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;99&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; end = cleanQuery.IndexOf(" ");&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;100&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(end&amp;lt;=0){end = cleanQuery.Length;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;101&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; theWord = cleanQuery.Substring(0,end);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;102&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;103&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Check it's not a noise word&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;104&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(!CheckNoiseWord(theWord))&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;105&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;106&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FTSAddWord(theWord);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;107&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;108&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;109&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Remove the word from the search string&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;110&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Remove(0,end);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;111&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Trim();&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;112&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;continue&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;113&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;114&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;else&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;115&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;116&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// A phrase&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;117&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; end = cleanQuery.IndexOf('"',1) + 1;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;118&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(end&amp;lt;=1){end = cleanQuery.Length;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;119&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FTSAddPhrase(cleanQuery.Substring(0,end));&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;120&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Remove(0,end);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;121&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cleanQuery = cleanQuery.Trim();&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;122&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;continue&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;123&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;124&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;125&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;126&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;127&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;128&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Checks a string for noise words and, if any exist,&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;129&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; removes them from the string and adds them to the&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;130&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; array of ignored words.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;131&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;132&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;param name="word"&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;the word to check&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;133&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;returns&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;true if the word is a noise word, otherwise false&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/returns&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;134&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; bool&lt;/SPAN&gt;&lt;SPAN&gt; CheckNoiseWord(&lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; word)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;135&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;136&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(IsNoiseWord(word))&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;137&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;138&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _ignoredWords.Add(word);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;139&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; true&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;140&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;141&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; false&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;142&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;143&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;144&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;145&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Add an individual word to the query&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;146&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;147&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;param name="word"&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;the word to be added&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;148&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; void&lt;/SPAN&gt;&lt;SPAN&gt; FTSAddWord(&lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; word)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;149&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;150&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(_ftsQuery.Length&amp;gt;0)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;151&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;152&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _ftsQuery = _ftsQuery + " AND ";&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;153&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;154&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _ftsQuery = _ftsQuery + "FORMSOF(INFLECTIONAL, " + word + ")";&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;155&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;156&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;157&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;158&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Add a phrase to the FTS query&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;159&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;160&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;param name="phrase"&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;the phrase to be added&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;161&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; void&lt;/SPAN&gt;&lt;SPAN&gt; FTSAddPhrase(&lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; phrase)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;162&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;163&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(_ftsQuery.Length&amp;gt;0)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;164&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;165&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _ftsQuery = _ftsQuery + " AND ";&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;166&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;167&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _ftsQuery = _ftsQuery + phrase;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;168&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;169&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;170&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;171&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb3&gt; Checks if the word is a noise word&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;172&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;173&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;param name="word"&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;the word to check&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;174&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb2&gt;///&lt;/SPAN&gt;&lt;SPAN class=cb2&gt; &amp;lt;returns&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=cb3&gt;true if it is a noise word, otherwise false&lt;/SPAN&gt;&lt;SPAN class=cb2&gt;&amp;lt;/returns&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;175&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;private&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; bool&lt;/SPAN&gt;&lt;SPAN&gt; IsNoiseWord(&lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; word)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;176&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;177&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Exclude individual characters&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;178&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(word.Length&amp;gt;1)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;179&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;180&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// Iterate through the string array of noise words,&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;181&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb3&gt;// and check the word parameter does not match&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;182&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;foreach&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN class=cb1&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; item &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; _noiseWords)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;183&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;184&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(word==item)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;185&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;186&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; true&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;187&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;188&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;189&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;190&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; false&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;191&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;192&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;193&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=cb1&gt;return&lt;/SPAN&gt;&lt;SPAN class=cb1&gt; true&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;194&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;195&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;196&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class=cb1&gt;&amp;nbsp; &amp;nbsp; #endregion&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;197&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=cl&gt;&lt;SPAN class=cln&gt;&amp;nbsp;&amp;nbsp;198&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;P.S. The code snippet above was formatted using the CopySourceAsHtml VS addin by &lt;A href="http://www.jtleigh.com/people/colin/blog/"&gt;Colin Coller&lt;/A&gt;.&lt;/P&gt;&lt;img src ="http://www.michaelfalconer.co.uk/aggbug/207.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Michael Falconer</dc:creator><title>New site - journalonline.co.uk</title><link>http://www.michaelfalconer.co.uk/archive/2004/10/25/205.aspx</link><pubDate>Mon, 25 Oct 2004 12:07:00 GMT</pubDate><guid>http://www.michaelfalconer.co.uk/archive/2004/10/25/205.aspx</guid><description>&lt;P&gt;Last week a site I've been working on for a couple of months went live - &lt;A href="http://www.journalonline.co.uk"&gt;www.journalonline.co.uk&lt;/A&gt;. Developed for the &lt;A href="http://www.lawscot.org.uk"&gt;Law Society of Scotland&lt;/A&gt; and working with &lt;A href="http://www.connectcommunications.co.uk"&gt;Connect Communications&lt;/A&gt;, the site is an online resource of information that appears in the printed magazine 'The Journal'.&lt;/P&gt;
&lt;P&gt;The site is entirely developed in &lt;A title=ASP.NET href="http://www.asp.net" target=_blank&gt;ASP.NET&lt;/A&gt; (using c#) and has a SQL Server 2000 backend. I made use of &lt;A href="http://www.wilsondotnet.com"&gt;Paul Wilson's&lt;/A&gt; &lt;A href="http://authors.aspalliance.com/PaulWilson/Articles/?id=14"&gt;master pages&lt;/A&gt; for maintaining the site templates, and also used the Data Provider and &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/cmab.asp"&gt;Configuration Management&lt;/A&gt; application blocks. Note that if you plan to use the Configuration Management application blosk, I strongly recommend you check out the forum on the gotdotnet site where the component is hosted - there are a number of known issues with it.&lt;/P&gt;
&lt;P&gt;The search facility provided on the site (to search the library of articles) makes use of a Full Text Index. Having used Index Server a number of times in the past to provide search facilities,&amp;nbsp;I understood the ease of integration this approach would offer, and the in built facility for ranking results. It was also a low cost solution, as no third party software was required. The main downside can be the performance of the index population, but in this case that wasn't an issue as the frequency of updates was low.&lt;/P&gt;
&lt;P&gt;The backend of the system also uses &lt;A href="http://www.freetextbox.com"&gt;FreeTextBox&lt;/A&gt; (the same component used to manage this blog!).&lt;/P&gt;
&lt;P&gt;Feel free to have a look and let me know what you think!&lt;/P&gt;&lt;img src ="http://www.michaelfalconer.co.uk/aggbug/205.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Michael D. Falconer</dc:creator><title>All Tied Up</title><link>http://www.michaelfalconer.co.uk/archive/2004/06/07/178.aspx</link><pubDate>Mon, 07 Jun 2004 22:37:00 GMT</pubDate><guid>http://www.michaelfalconer.co.uk/archive/2004/06/07/178.aspx</guid><description>&lt;P&gt;While studying for my SQL Server exam recently I came across an interesting feature of the T-SQL SELECT statement I'd never noticed before&amp;nbsp;- the WITH TIES argument. Used in conjunction with a TOP &lt;EM&gt;n&lt;/EM&gt; or TOP &lt;EM&gt;n&lt;/EM&gt; PERCENT argument, and the ORDER BY clause, you can return not just the &lt;EM&gt;n&lt;/EM&gt; records you'd expect, but all additional records with the same value in the ORDER BY column as the &lt;EM&gt;n&lt;/EM&gt;&lt;SUP&gt;th&lt;/SUP&gt; record.&lt;/P&gt;
&lt;P&gt;Lets say, for example, that you have an online competition and you want to pick the top 5 entrants who achieved the highest scores. Your data might include the following entries:&lt;/P&gt;
&lt;P&gt;Score&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&lt;BR&gt;285&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob&lt;BR&gt;250&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bill&lt;BR&gt;240&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mick&lt;BR&gt;240&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sue&lt;BR&gt;235&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; James&lt;BR&gt;235&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jill&lt;BR&gt;235&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dean&lt;BR&gt;230&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Michelle&lt;/P&gt;
&lt;P&gt;In the past I would of just written:&lt;/P&gt;
&lt;P&gt;SELECT TOP 5&amp;nbsp;*&amp;nbsp;FROM tablename ORDER BY score DESC&lt;/P&gt;
&lt;P&gt;However, how would this decide between James, Jill and Dean who are in join 5th place? It would be much better to include those entries who are in joint 5th position (unless, of course, you also decide to order the results by the date entered so the first person to get the score wins&amp;nbsp;- but let's say we don't!). Instead of the above, you&amp;nbsp;can write the query as:&lt;/P&gt;
&lt;P&gt;SELECT TOP 5 WITH TIES * FROM tablename ORDER BY score DESC&lt;/P&gt;
&lt;P&gt;This will return not just the top 5 records, but also additional records with the same value as the same score as the 5&lt;SUP&gt;th&lt;/SUP&gt; record. In this example, it will return all records from Bob to Dean - 7 records in total.&lt;/P&gt;&lt;img src ="http://www.michaelfalconer.co.uk/aggbug/178.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Michael D. Falconer</dc:creator><title>Rob Howard : Farewell and Teched slides</title><link>http://www.michaelfalconer.co.uk/archive/2004/06/01/173.aspx</link><pubDate>Tue, 01 Jun 2004 13:02:00 GMT</pubDate><guid>http://www.michaelfalconer.co.uk/archive/2004/06/01/173.aspx</guid><description>&lt;A href="http://weblogs.asp.net/rhoward" target="_blank"&gt;Rob Howard &lt;/A&gt;has &lt;A href="http://weblogs.asp.net/rhoward/archive/2004/05/28/143830.aspx" target="_blank"&gt;announced&lt;/A&gt; that he's leaving Microsoft, but has thankfully posted up &lt;A href="http://weblogs.asp.net/rhoward/archive/2004/05/28/143830.aspx" target="_blank"&gt;slides from some TechEd US presentations&lt;/A&gt;. I've just had a flick through the presentation titled 'Running www.asp.net', and it looks very interesting. There's certainly a nice list of recommendations to follow.&lt;img src ="http://www.michaelfalconer.co.uk/aggbug/173.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Michael D. Falconer</dc:creator><title>70-229 : SQL Server 2000 Exam</title><link>http://www.michaelfalconer.co.uk/archive/2004/06/01/171.aspx</link><pubDate>Tue, 01 Jun 2004 12:00:00 GMT</pubDate><guid>http://www.michaelfalconer.co.uk/archive/2004/06/01/171.aspx</guid><description>&lt;P&gt;Well, I passed my SQL Server exam (70-229) yesterday, and I'm glad it's over! I managed to score 853 (I assume out of 1000), so that's not too bad. Congratulations also to &lt;A href="http://www.rromasoft.com/" target=_blank&gt;Jim&lt;/A&gt;, who managed to pass his VB.NET Web Applications at the same time.&lt;/P&gt;&lt;img src ="http://www.michaelfalconer.co.uk/aggbug/171.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Michael D. Falconer</dc:creator><title>SQL Server Exam</title><link>http://www.michaelfalconer.co.uk/archive/2004/05/27/162.aspx</link><pubDate>Thu, 27 May 2004 11:09:00 GMT</pubDate><guid>http://www.michaelfalconer.co.uk/archive/2004/05/27/162.aspx</guid><description>&lt;P&gt;I finally decided to sit my first Microsoft exam, and am booked in to sit Exam 70-229 : Designing and implementing databases with Microsoft SQL Server 2000 Enterprise Edition on Monday. Not looking forward to it, mainly because I've had very little time to study. Guess I'll have to see how it goes - if I fail, at least I'll know what to expect for the other exams!&lt;/P&gt;
&lt;P&gt;I've never been particularly bothered by the exams before, but now that I'm doing freelance/contract work, it makes sense to gain MCSD certification so that potential clients can see that I really can do most of what I say I can! Maybe I should of gone for the Windows or Web applciations exams first, but I've worked with SQL for longer than .net, so it kind of makes sense to try it first.&lt;/P&gt;
&lt;P&gt;If it all goes quiet from me on Monday, I'll be hangnig my head in shame, and hiding in a small dark corner of some room...&lt;/P&gt;&lt;img src ="http://www.michaelfalconer.co.uk/aggbug/162.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>