diff --git a/assets/js/flexsearch.js b/assets/js/flexsearch.js index ced4e90..b75d461 100644 --- a/assets/js/flexsearch.js +++ b/assets/js/flexsearch.js @@ -318,7 +318,10 @@ document.addEventListener("DOMContentLoaded", function () { } resultsElement.classList.remove('hx:hidden'); - const pageResults = window.pageIndex.search(query, 5, { enrich: true, suggest: true })[0]?.result || []; + // Configurable search limits with sensible defaults + const maxPageResults = parseInt('{{- site.Params.search.flexsearch.maxPageResults | default 20 -}}', 10); + const maxSectionResults = parseInt('{{- site.Params.search.flexsearch.maxSectionResults | default 10 -}}', 10); + const pageResults = window.pageIndex.search(query, maxPageResults, { enrich: true, suggest: true })[0]?.result || []; const results = []; const pageTitleMatches = {}; @@ -327,12 +330,13 @@ document.addEventListener("DOMContentLoaded", function () { const result = pageResults[i]; pageTitleMatches[i] = 0; - // Show the top 5 results for each page - const sectionResults = window.sectionIndex.search(query, 5, { enrich: true, suggest: true, tag: { 'pageId': `page_${result.id}` } })[0]?.result || []; + const sectionResults = window.sectionIndex.search(query, + { enrich: true, suggest: true, tag: { 'pageId': `page_${result.id}` } })[0]?.result || []; let isFirstItemOfPage = true const occurred = {} - for (let j = 0; j < sectionResults.length; j++) { + const nResults = Math.min(sectionResults.length, maxSectionResults); + for (let j = 0; j < nResults; j++) { const { doc } = sectionResults[j] const isMatchingTitle = doc.display !== undefined if (isMatchingTitle) {