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() {