method of static class JsNgram

Description

Picks up perfect match from sorted result of N-gram partial matches. Returns the perfect match. Counts the number of hits and puts it in the property work as an array of [hits, documents].

Example
var found = JsNgram.sortResultsByLocation(results);
JsNgram.findPerfection(found, 3);
      
Usage

findPerfection(x, n);

Argument x is a sorted result of match (by document). The data should be the output of the method sortResultsByLocation. Argument n is the required count for perfect match. This should be the number of generated N-gram keys. For example, 2 for "cat" and 4 for "alice". The output is compatible format with the method sortFoundByDocumentPosition.

This very method does match the N-gram results comparing the N-gram key numbers with positons.

The input found format is:

{
  document id: {
    N-gram key number: [position, position, position, ... ],
    N-gram key number: [position, position, position, ... ],
    N-gram key number: [position, position, position, ... ]
  }, 
  document id: {
    N-gram key number: [position, position, position, ... ],
    N-gram key number: [position, position, position, ... ]
  }
}
      

In above notation, N-gram key number is a sequence number of each N-gram key. For example, for searching "alice", following four N-gram keys are generated: "al", "li", "ic" and "ce" with the N-gram key number is 0, 1, 2 and 3, respectively.

The output format is:

{
  document id: [ # list is sorted
    [position, matched N-gram key text],
    [position, matched N-gram key text],
    [position, matched N-gram key text]
  ], 
  document id: [ # list is sorted
    [position, matched N-gram key text],
    [position, matched N-gram key text]
  ]
}