public function fuzzySearch($keyword)
{
$prefix = substr($keyword, 0, $this->fuzzy_prefix_length);
$searchWordlist = "SELECT * FROM wordlist WHERE term like :keyword ORDER BY num_hits DESC LIMIT {$this->fuzzy_max_expansions}";
$stmtWord = $this->index->prepare($searchWordlist);
$stmtWord->bindValue(':keyword', mb_strtolower($prefix) . "%");
$stmtWord->execute();
$matches = $stmtWord->fetchAll(PDO::FETCH_ASSOC);
$resultSet = [];
foreach ($matches as $match) {
if (levenshtein($match['term'], $keyword) <= $this->fuzzy_distance) {
$resultSet[] = $match;
}
}
return $resultSet;
}