Pruebe este código js en lugar de lo que tiene. Agregué la función de retraso para que el script espere una cantidad de tiempo específica después de que el usuario deja de escribir antes de enviar la solicitud. Esto evita que se envíe una gran cantidad de solicitudes al 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>