search method

List<TextSearchResult<T>> search(
  1. String term, {
  2. double matchThreshold = 1.5,
})

Returns search results along with score ordered by decreasing score. For libraries with 10k+ items, fastSearch will start being noticeably faster.

Implementation

List<TextSearchResult<T>> search(String term, {double matchThreshold = 1.5}) {
  return items
      .map((item) => Tuple2(
          item,
          item.terms
              .map((itemTerm) => _scoreTerm(term, itemTerm))
              .reduce(math.min)))
      .where((t) => t.item2 < matchThreshold)
      .map((t) => TextSearchResult(t.item1.object, t.item2))
      .toList()
    ..sort((a, b) => a.score.compareTo(b.score));
}