return $reversed->limit($limit); } else { // trailing wildcard $straight = $tries['trie']->search(strtolower($terms[0])); return $straight->limit($limit); } } /* Populate the trie */ $startTime = microtime(true); $tries = buildTries(__DIR__ . '/../data/dictionary.json'); $endTime = microtime(true); $callTime = $endTime - $startTime; echo 'Load Time: ', sprintf('%.4f', $callTime), ' s', PHP_EOL; echo 'Current Memory: ', sprintf('%.2f', memory_get_usage(false) / 1024), ' k', PHP_EOL; echo 'Peak Memory: ', sprintf('%.2f', memory_get_peak_usage(false) / 1024), ' k', PHP_EOL, PHP_EOL; /* Search for the requested terms */ $startTime = microtime(true); $searchResult = searchTries($searchTerm, $tries, $limit); if ($searchResult->count() == 0) { echo 'No matching words found', PHP_EOL; } else { foreach ($searchResult as $word => $value) { echo $word, PHP_EOL; } } echo PHP_EOL; $endTime = microtime(true); $callTime = $endTime - $startTime; echo 'Search Time: ', sprintf('%.4f', $callTime), ' s', PHP_EOL; echo 'Current Memory: ', sprintf('%.2f', memory_get_usage(false) / 1024), ' k', PHP_EOL; echo 'Peak Memory: ', sprintf('%.2f', memory_get_peak_usage(false) / 1024), ' k', PHP_EOL;
return $tries['rtrie']->search(strrev(strtolower($terms[1])))->reverseKeys()->limit($limit); } else { // trailing wildcard return $tries['trie']->search(strtolower($terms[0]))->limit($limit); return $straight; } } /* Populate the trie */ $startTime = microtime(true); $tries = buildTries(__DIR__ . '/../data/dictionary.json'); $endTime = microtime(true); $callTime = $endTime - $startTime; echo 'Load Time: ', sprintf('%.4f', $callTime), ' s', PHP_EOL; echo 'Current Memory: ', sprintf('%.2f', memory_get_usage(false) / 1024), ' k', PHP_EOL; echo 'Peak Memory: ', sprintf('%.2f', memory_get_peak_usage(false) / 1024), ' k', PHP_EOL; /* Search for the requested terms */ $startTime = microtime(true); $words = searchTries($searchTerm, $tries, $limit); if (count($words) > 0) { foreach ($words as $word) { echo $word, PHP_EOL; } } else { echo 'No matches found', PHP_EOL; } echo PHP_EOL; $endTime = microtime(true); $callTime = $endTime - $startTime; echo 'Search Time: ', sprintf('%.4f', $callTime), ' s', PHP_EOL; echo 'Current Memory: ', sprintf('%.2f', memory_get_usage(false) / 1024), ' k', PHP_EOL; echo 'Peak Memory: ', sprintf('%.2f', memory_get_peak_usage(false) / 1024), ' k', PHP_EOL;