<p>I'm having some problems with the ranking used by fulltext search in SQL Server.</p>

<p>Suppose a user searches for two words, "foo bar".  We assume the user intends to do an OR search, so we pass "foo OR bar" to our CONTAINSTABLE call.  What we're finding is that an row that contains "foo" 10 times but does not contain "bar" will have a much higher rank then an row that that has both "foo" and "bar".
  We would want the row that has both terms to be preferred over a row that only has one term multiple times.  Any advice on how to achieve this?</p>

<p>I have found documentation related to a RANKMETHOD modifier, but that seems to be for SQL Enterprise search only, and not available on regular SQL Server 2005 installs.  We could also switch to Lucene.Net, but I would hope to verify it has the better ranking available.  We might also do multiple searches and merge the results, but that seems undesireable as the number of words searched for increases.</p>

I did a short discussion on Inverted Indexes and Cosine Ranking (the core algorithms and data structures of full-text retrieval systems)
Here.
On a pure cosine ranking, foo (1), bar (1) should be closer to the vector occupied by foo, bar than foo (10), bar (0).  One can fiddle the cosine value post-hoc, which is essentially what
Pagerank
does.  If the full-text search is fiddling the cosine ranking after calculating the dot product rather than weighting the axes, this would explain the disproportionate significance of foo.