anchor.diff:         float wordMatchCount
          float titleMatches.Length
          float titleMatches.Length / float uniqueWords.Length
  +       float descMatches.Length
          float descMatches.Length / float uniqueWords.Length
  -       float descMatches.Length
          float attrMatches.Length
  +//       float attrMatches.Length / float uniqueWords.Length
          float brandNameMatch |]
   
   let getAttr attribMap productId =
  
positive.code: open FSharp.Collections.ParallelSeq
  open HomeDepot.Core
  open StringUtils
  
  printfn "Building Brand Name set..."
  let brands =
  
negative.code:           | "yes" -> name // if true attrib, include attrib name
            | "no"  -> String.Empty
            | _     -> value
        a |> Seq.map (fun (_, name, value) -> getAttrStr name value) |> Array.ofSeq
      | None -> [||]
  
  let getFeatures attribs attribMap sample =
      sample |> features attribs (brandName attribMap sample.ProductId)
  