Limit search API calls rate when typing in the search portal widget

This commit is contained in:
luccioman 2018-08-28 11:39:16 +02:00
parent 39dd29a484
commit 79643c40bf

View File

@ -184,7 +184,7 @@ function yrun() {
$("#ypopup").dialog('close');
} else { // Else fire up a search request and remeber the current search term
ycurr = $("#yquery").getValue();
yacysearch(true);
debouncedYacysearch(true);
}
return false;
});
@ -205,6 +205,24 @@ function yrun() {
});
}
var suggestTimeoutId = null;
/**
* Debounce wrapper to limit the rate of calls to the backend search service.
* @param clear when true, clear the results popup
*/
function debouncedYacysearch(clear) {
if(suggestTimeoutId != null) {
/* Remove delayed call not yet done */
clearTimeout(suggestTimeoutId);
}
/* Limit the rate of calls to the search API by adding a delay before effective call */
suggestTimeoutId = setTimeout(function() {
yacysearch(clear);
}, 400);
}
function yacysearch(clear) {
var url = yconf.url + '/yacysearch.json?callback=?' // JSONP (cross domain) request URL
//var url = yconf.url + '/solr/select?wt=yjson&callback=?' // JSONP (cross domain) request URL