diff --git a/src/interface/desktop/search.html b/src/interface/desktop/search.html index 4ca248c5..ffc1bf64 100644 --- a/src/interface/desktop/search.html +++ b/src/interface/desktop/search.html @@ -192,16 +192,17 @@ }); } + let debounceTimeout; function incrementalSearch(event) { - type = 'all'; - // Search with reranking on 'Enter' - if (event.key === 'Enter') { - search(rerank=true); - } - // Limit incremental search to text types - else if (type !== "image") { - search(rerank=false); - } + // Run incremental search only after waitTime passed since the last key press + let waitTime = 300; + clearTimeout(debounceTimeout); + debounceTimeout = setTimeout(() => { + type = 'all'; + // Search with reranking on 'Enter' + let should_rerank = event.key === 'Enter'; + search(rerank=should_rerank); + }, waitTime); } async function populate_type_dropdown() { diff --git a/src/khoj/interface/web/search.html b/src/khoj/interface/web/search.html index 98e37cb8..8bbd9f32 100644 --- a/src/khoj/interface/web/search.html +++ b/src/khoj/interface/web/search.html @@ -193,16 +193,17 @@ }); } + let debounceTimeout; function incrementalSearch(event) { - type = document.getElementById("type").value; - // Search with reranking on 'Enter' - if (event.key === 'Enter') { - search(rerank=true); - } - // Limit incremental search to text types - else if (type !== "image") { - search(rerank=false); - } + // Run incremental search only after waitTime passed since the last key press + let waitTime = 300; + clearTimeout(debounceTimeout); + debounceTimeout = setTimeout(() => { + type = document.getElementById("type").value; + // Search with reranking on 'Enter' + let should_rerank = event.key === 'Enter'; + search(rerank=should_rerank); + }, waitTime); } function populate_type_dropdown() {