Squashed commit of the following:
commit 3b229cad538ad88ef2d366964c4261bc0e02fb7c Author: Simon Cambier <simon.cambier@protonmail.com> Date: Sat Nov 5 14:30:08 2022 +0100 1.8.0-beta.1 commit f43c369b2dd0a1083b171724e3f7466429505629 Author: Simon Cambier <simon.cambier@protonmail.com> Date: Sat Nov 5 13:39:45 2022 +0100 Squashed commit of the following: commit 93508ee95046385baf62475e5bd835ed9fafe6d3 Author: Simon Cambier <simon.cambier@protonmail.com> Date: Sat Nov 5 13:35:56 2022 +0100 Cleaning commit 205e6a7cce4c1939338820f366f7ae8a067ec7fb Author: Simon Cambier <simon.cambier@protonmail.com> Date: Fri Nov 4 08:53:46 2022 +0100 Added logs commit ea19b94e164581829908ac71d09a60e230925a7f Author: Simon Cambier <simon.cambier@protonmail.com> Date: Thu Nov 3 22:27:24 2022 +0100 Notices commit 53ff4e822b3c292a56da150b94a1cfe43e199d44 Author: Simon Cambier <simon.cambier@protonmail.com> Date: Thu Nov 3 22:27:09 2022 +0100 Custom minisearch build + Notice when the cache could be corrupted commit 498408afd1c350dd68969318c3533fff8aa6c172 Author: Simon Cambier <simon.cambier@protonmail.com> Date: Thu Nov 3 22:26:22 2022 +0100 Added a button to manually clear the cache commit 90afe5d3868989626ba4613b064e24ac7efa88be Author: Simon Cambier <simon.cambier@protonmail.com> Date: Thu Nov 3 22:03:41 2022 +0100 Optimized loading minisearch from cache commit 719dcb9c82f09f56dabb828ac13c9c1db7f795bb Author: Simon Cambier <simon.cambier@protonmail.com> Date: Thu Nov 3 21:43:49 2022 +0100 #92 - Refactored cache to make it behave like pre-indexedDb commit 2164ccfa39d83eef23231d01e8aa35ac30e0d31c Author: Simon Cambier <simon.cambier@protonmail.com> Date: Wed Nov 2 23:13:59 2022 +0100 Removed cache & tmp engine commit 50eb33bbd4d074be9a9952eaf871cd8f58b327e6 Author: Simon Cambier <simon.cambier@protonmail.com> Date: Wed Nov 2 22:56:04 2022 +0100 More efficient loading of PDFs commita6342a675fAuthor: Simon Cambier <simon.cambier@protonmail.com> Date: Wed Nov 2 10:34:02 2022 +0100 #120 - Cleaning of old cache databases commitb6890567f3Author: Simon Cambier <simon.cambier@protonmail.com> Date: Mon Oct 31 17:28:17 2022 +0100 Updated Readme
This commit is contained in:
85
src/main.ts
85
src/main.ts
@@ -1,4 +1,4 @@
|
||||
import { Notice, Plugin, TFile } from 'obsidian'
|
||||
import { Notice, Platform, Plugin, TFile } from 'obsidian'
|
||||
import { SearchEngine } from './search/search-engine'
|
||||
import {
|
||||
OmnisearchInFileModal,
|
||||
@@ -11,17 +11,17 @@ import api from './tools/api'
|
||||
import { isFilePlaintext, wait } from './tools/utils'
|
||||
import * as NotesIndex from './notes-index'
|
||||
import * as FileLoader from './file-loader'
|
||||
import { OmnisearchCache } from './database'
|
||||
import { cacheManager } from './cache-manager'
|
||||
|
||||
export default class OmnisearchPlugin extends Plugin {
|
||||
private ribbonButton?: HTMLElement
|
||||
|
||||
async onload(): Promise<void> {
|
||||
await cleanOldCacheFiles()
|
||||
await OmnisearchCache.clearOldDatabases()
|
||||
await loadSettings(this)
|
||||
|
||||
// Initialize minisearch
|
||||
await SearchEngine.initFromCache()
|
||||
|
||||
_registerAPI(this)
|
||||
|
||||
if (settings.ribbonIcon) {
|
||||
@@ -105,37 +105,68 @@ export default class OmnisearchPlugin extends Plugin {
|
||||
* Read the files and feed them to Minisearch
|
||||
*/
|
||||
async function populateIndex(): Promise<void> {
|
||||
const tmpEngine = SearchEngine.getTmpEngine()
|
||||
console.time('Omnisearch - Indexing duration')
|
||||
|
||||
// Load plain text files
|
||||
console.time('Omnisearch - Timing')
|
||||
const files = await FileLoader.getPlainTextFiles()
|
||||
// Index them
|
||||
await tmpEngine.addAllToMinisearch(files)
|
||||
console.log(`Omnisearch - Indexed ${files.length} notes`)
|
||||
console.timeEnd('Omnisearch - Timing')
|
||||
// Initialize minisearch
|
||||
let engine = SearchEngine.getEngine()
|
||||
|
||||
// Load normal notes into the main search engine
|
||||
SearchEngine.loadTmpDataIntoMain()
|
||||
// No cache for iOS
|
||||
if (!Platform.isIosApp) {
|
||||
engine = await SearchEngine.initFromCache()
|
||||
}
|
||||
|
||||
// Load plaintext files
|
||||
const plainTextFiles = await FileLoader.getPlainTextFiles()
|
||||
let allFiles = [...plainTextFiles]
|
||||
// iOS: since there's no cache, directly index the documents
|
||||
if (Platform.isIosApp) {
|
||||
await wait(1000)
|
||||
await engine.addAllToMinisearch(plainTextFiles)
|
||||
}
|
||||
|
||||
// Load PDFs
|
||||
if (settings.PDFIndexing) {
|
||||
console.time('Omnisearch - Timing')
|
||||
const pdfs = await FileLoader.getPDFFiles()
|
||||
// Index them
|
||||
await tmpEngine.addAllToMinisearch(pdfs)
|
||||
console.log(`Omnisearch - Indexed ${pdfs.length} PDFs`)
|
||||
console.timeEnd('Omnisearch - Timing')
|
||||
|
||||
// Load PDFs into the main search engine, and write cache
|
||||
SearchEngine.loadTmpDataIntoMain()
|
||||
// iOS: since there's no cache, just index the documents
|
||||
if (Platform.isIosApp) {
|
||||
await wait(1000)
|
||||
await engine.addAllToMinisearch(pdfs)
|
||||
}
|
||||
// Add PDFs to the files list
|
||||
allFiles = [...allFiles, ...pdfs]
|
||||
}
|
||||
|
||||
SearchEngine.isIndexing.set(false)
|
||||
await tmpEngine.writeToCache()
|
||||
|
||||
// Clear memory
|
||||
SearchEngine.clearTmp()
|
||||
// Other platforms: make a diff of what's to add/update/delete
|
||||
if (!Platform.isIosApp) {
|
||||
// Check which documents need to be removed/added/updated
|
||||
const diffDocs = await cacheManager.getDiffDocuments(allFiles)
|
||||
// Add
|
||||
await engine.addAllToMinisearch(diffDocs.toAdd)
|
||||
diffDocs.toAdd.forEach(doc =>
|
||||
cacheManager.updateLiveDocument(doc.path, doc)
|
||||
)
|
||||
|
||||
// Delete
|
||||
diffDocs.toDelete.forEach(d => engine.removeFromMinisearch(d))
|
||||
diffDocs.toDelete.forEach(doc => cacheManager.deleteLiveDocument(doc.path))
|
||||
|
||||
// Update (delete + add)
|
||||
diffDocs.toUpdate
|
||||
.map(d => d.old)
|
||||
.forEach(d => {
|
||||
engine.removeFromMinisearch(d)
|
||||
cacheManager.updateLiveDocument(d.path, d)
|
||||
})
|
||||
await engine.addAllToMinisearch(diffDocs.toUpdate.map(d => d.new))
|
||||
}
|
||||
// Load PDFs into the main search engine, and write cache
|
||||
// SearchEngine.loadTmpDataIntoMain()
|
||||
SearchEngine.isIndexing.set(false)
|
||||
if (!Platform.isIosApp) {
|
||||
await SearchEngine.getEngine().writeToCache(allFiles)
|
||||
}
|
||||
|
||||
console.timeEnd('Omnisearch - Indexing duration')
|
||||
}
|
||||
|
||||
async function cleanOldCacheFiles() {
|
||||
|
||||
Reference in New Issue
Block a user