Skip to content

Commit 7845d8f

Browse files
committed
add search index file
1 parent b32f982 commit 7845d8f

2 files changed

Lines changed: 254116 additions & 2 deletions

File tree

scripts/main.js

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@
3838
debounceTimer: null,
3939
entryKeys: new Set(),
4040
elements: null,
41-
deepIndexingEnabled: false
41+
deepIndexingEnabled: false,
42+
indexLoaded: false,
43+
indexFile: 'search-index.json'
4244
};
4345
var domParserInstance = null;
4446
var cachedNavFromStorage = null;
@@ -703,7 +705,47 @@
703705
});
704706

705707
updateSearchFeedback();
706-
scheduleIndexing();
708+
loadSearchIndexFromFile();
709+
}
710+
711+
function loadSearchIndexFromFile() {
712+
if (!searchState.deepIndexingEnabled) {
713+
searchState.indexLoaded = true;
714+
scheduleIndexing();
715+
return;
716+
}
717+
718+
fetch(searchState.indexFile)
719+
.then(function(response) {
720+
if (!response.ok) {
721+
throw new Error('Index file not found');
722+
}
723+
return response.json();
724+
})
725+
.then(function(indexData) {
726+
if (indexData && indexData.entries && Array.isArray(indexData.entries)) {
727+
console.log('Search index loaded from file:', indexData.entries.length, 'entries');
728+
searchState.extraEntries = indexData.entries;
729+
searchState.entryKeys.clear();
730+
searchState.baseEntries.forEach(function(entry) {
731+
searchState.entryKeys.add(entryKey(entry));
732+
});
733+
indexData.entries.forEach(function(entry) {
734+
searchState.entryKeys.add(entryKey(entry));
735+
});
736+
searchState.indexLoaded = true;
737+
searchState.indexing = false;
738+
updateSearchFeedback(searchState.activeQuery, null);
739+
if (searchState.activeQuery && searchState.activeQuery.length >= 2) {
740+
performSearch(searchState.activeQuery);
741+
}
742+
}
743+
})
744+
.catch(function(error) {
745+
console.log('Search index file not found, will build dynamically');
746+
searchState.indexLoaded = false;
747+
scheduleIndexing();
748+
});
707749
}
708750

709751
function prepareBaseSearchEntries() {
@@ -953,6 +995,10 @@
953995
searchState.indexing = false;
954996
return;
955997
}
998+
if (searchState.indexLoaded) {
999+
searchState.indexing = false;
1000+
return;
1001+
}
9561002
if (searchState.indexing || !searchState.queue.length) {
9571003
searchState.indexing = searchState.queue.length > 0;
9581004
return;

0 commit comments

Comments
 (0)