title: Is it possible to combine an inflectional and proximity search in a single CONTAINSTABLE search condition?
body: <p>I'm playing around in the AdventureWorks database with full text search.  In the production.ProductDescription I am trying to search for "mountain" and "replacements".</p>
  
  <p>I know there's a record with the following description:</p>
  
  <pre><code>High-performance mountain replacement wheel.
  </code></pre>
  
  <p>My first go around was this:</p>
  
  <pre><code>SELECT 
    pd.Description, 
    ct.RANK
  FROM Production.ProductDescription AS pd 
    INNER JOIN CONTAINSTABLE(
      Production.ProductDescription, 
      Description, 
      'mountain NEAR replacements' 
    ) AS ct ON pd.ProductDescriptionID = ct.[KEY]
  ORDER BY ct.RANK DESC;
  </code></pre>
  
  <p>This returned 0 rows.  If I change 'mountain NEAR replacements' to 'mountain NEAR replacement' I get the record I expect in the resultant data set.  </p>
  
  <p>My next attempt was to try something like the following:</p>
  
  <pre><code>SELECT 
    pd.Description, 
    ct.RANK
  FROM Production.ProductDescription AS pd 
    INNER JOIN CONTAINSTABLE(
      Production.ProductDescription, 
      Description, 
      'FORMSOF(INFLECTIONAL, "replacements") NEAR "mountain"' 
  ) AS ct ON pd.ProductDescriptionID = ct.[KEY]
  ORDER BY ct.RANK DESC;
  </code></pre>
  
  <p>but this generates the error</p>
  
  <pre><code>Syntax error near 'NEAR' in the full-text search condition 'FORMSOF(INFLECTIONAL, "replacements") NEAR "mountain"'.
  </code></pre>
  
  <p>I had a look at the grammar for CONTAINSTABLE and it turns out that you can't have a generation_term (e.g. FORMSOF()) and a proximity term (e.g. NEAR) in the same search condition.</p>
  
  <p>I added the following record to the table:</p>
  
  <pre><code>Replacement parts for you omg gee-whiz mountain
  </code></pre>
  
  <p>That record ranks high (96) in the following fts query:</p>
  
  <pre><code>SELECT 
    pd.Description, 
    ct.RANK
  FROM Production.ProductDescription AS pd 
    INNER JOIN CONTAINSTABLE(
      Production.ProductDescription, 
      Description, 
      'FORMSOF(INFLECTIONAL,"replacements") AND "mountain"' 
    ) AS ct ON pd.ProductDescriptionID = ct.[KEY]     
  ORDER BY ct.RANK DESC;
  </code></pre>
  
  <p>but as expected ranks lower (32) in this query:</p>
  
  <pre><code>SELECT 
    pd.Description, 
    ct.RANK
  FROM Production.ProductDescription AS pd 
    INNER JOIN CONTAINSTABLE(
      Production.ProductDescription, 
      Description, 
      '"replacement" NEAR "mountain"' 
  ) AS ct ON pd.ProductDescriptionID = ct.[KEY]
  ORDER BY ct.RANK DESC;
  </code></pre>
  
  <p>For this contrived example, I'd like a user to be able to provide the search terms mountain and replacements and have it return records with a relatively high rank for records that contain replacement and mountain near each other but am at a loss at how to get there.</p>