anchor.diff:      let uniqueWords = words |> splitOnSpaces |> Array.distinct
       let title = sample.Title
       let titleWords = title |> splitOnSpaces
  +
       let indices = uniqueWords |> Seq.map (fun w -> titleWords |> Seq.tryFindIndexBack (isMatch w)) |> Seq.choose id
       let queryTitleIndices = indices |> Seq.map (fun i -> float i / float titleWords.Length) |> Array.ofSeq
       let queryTitlePosScore = if Array.isEmpty queryTitleIndices then 0. else Seq.average queryTitleIndices
  +
       let attributes = attrSelector sample.ProductId |> Array.ofSeq
       let attributeNames = attributeNames attributes
       let attrNameMatches = attributeNames |> Seq.filter (fun n -> uniqueWords |> Seq.exists (isMatch n))
       let attributesText = attributesConcat attributes
       let desc = sample.Description |> fixLineConcats attributesText
       let deduped = attributesText |> Seq.where (containedIn desc >> not) |> String.concat " "
  +
       let titleMatches = uniqueWords |> Array.filter (isMatch title)
       let descMatches = uniqueWords |> Array.filter (isMatch desc)
       let attrMatches = uniqueWords |> Array.filter (isMatch deduped)
  +
  +    let uniqueWordsBwd = uniqueWords |> Seq.rev
  +    let titleWordsBwd = titleWords |> Seq.rev
  +    let bwd = Seq.zip uniqueWordsBwd titleWordsBwd |> Seq.takeWhile (fun (u,t) -> u |> isMatch t) |> Seq.length
  +    let fwd = Seq.zip uniqueWords titleWords |> Seq.takeWhile (fun (u,t) -> u |> isMatch t) |> Seq.length
  +
       let lastWordMatch = (uniqueWords |> Array.last) |> isMatch (titleWords |> Array.last)
       let wordMatchCount =
           uniqueWords
  
positive.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
  
negative.code: 
  //let rfQuality = evaluate rfLearn
  submission rfLearn
  //0.48737 = kaggle rsme; RDF RMS Error: 0.430396; Out-of-bag RMS Error: 0.477678
  //0.48371 = kaggle rsme; RDF RMS Error: 0.451875; Out-of-bag RMS Error: 0.475592
  //0.47806 = kaggle rsme; RDF RMS Error: 0.446892; Out-of-bag RMS Error: 0.470399
  //0.47774 = kaggle rsme; RDF RMS Error: 0.446649; Out-of-bag RMS Error: 0.470098
  