search method
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));
}