anchor.diff:         float attrMatches.Length
          (if attributes.Length > 0 then 1. else 0.)
          (if lastWordMatch then 1. else 0.)
  +       float fwd
  +       float bwd
          float (attrNameMatches |> Seq.length)
          queryTitlePosScore
   //       float attrMatches.Length / float uniqueWords.Length
  
positive.code:           match searchedBrand with // is query brand name in product title?
            | Some b -> if b |> containedIn title then 1 else -1
            | None -> 0
      [| float uniqueWords.Length
         float words.Length
         float title.Length
  
negative.code: //?.????? = kaggle rsme; RDF RMS Error: 0.433009; Out-of-bag RMS Error: 0.468017 : 600 trees/7.5% bag
  //0.47743 = kaggle rsme; RDF RMS Error: 0.420040; Out-of-bag RMS Error: 0.466575 : 600 trees/10% bag
  //0.47629 = kaggle rsme; RDF RMS Error: 0.419235; Out-of-bag RMS Error: 0.465694 : last word match
  //?.????? = kaggle rsme; RDF RMS Error: 0.419149; Out-of-bag RMS Error: 0.465570 : longest sequence of query + title matching tail words 1933
  //0.47552 = kaggle rsme; RDF RMS Error: 0.418375; Out-of-bag RMS Error: 0.464791 : longest sequence of query + title matching lead words 2041
  