Tente este código js no lugar do que você tem. Adicionei a função de atraso para que o script aguarde um determinado período de tempo após o usuário parar de digitar antes de enviar a solicitação. Isso evita que uma grande quantidade de solicitações seja enviada ao servidor.
<script type="text/javascript">
var delay = (function() {
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$("#search-box").keyup(
function () {
delay(function () {
var keyword = $("#search-box").val();
var URL = encodeURI("search.php?q=" + keyword);
$.ajax({
url: URL,
cache: false,
type: "GET",
success: function(response) {
$("#results").html(response);
}
});
}, 500);
}
);
</script>