Minisearch 6.0 mostly ok
This commit is contained in:
@@ -1,38 +1,7 @@
|
||||
import { Notice, TAbstractFile, TFile } from 'obsidian'
|
||||
import { isFileIndexable, wait } from './tools/utils'
|
||||
import type { TAbstractFile } from 'obsidian'
|
||||
import { removeAnchors } from './tools/notes'
|
||||
import { SearchEngine } from './search/search-engine'
|
||||
import { cacheManager } from './cache-manager'
|
||||
import type { IndexedDocument } from './globals'
|
||||
import { getIndexedDocument } from "./file-loader";
|
||||
|
||||
const indexedList: Set<string> = new Set()
|
||||
|
||||
/**
|
||||
* Adds a file to the search index
|
||||
* @param file
|
||||
* @returns
|
||||
*/
|
||||
export async function addToIndexAndMemCache(
|
||||
file: TAbstractFile
|
||||
): Promise<void> {
|
||||
if (!(file instanceof TFile) || !isFileIndexable(file.path)) {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
if (indexedList.has(file.path)) {
|
||||
throw new Error(`${file.basename} is already indexed`)
|
||||
}
|
||||
|
||||
// Make the document and index it
|
||||
SearchEngine.getEngine().addSingleToMinisearch(file.path)
|
||||
indexedList.add(file.path)
|
||||
} catch (e) {
|
||||
// console.trace('Error while indexing ' + file.basename)
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
import { searchEngine } from './search/omnisearch'
|
||||
|
||||
/**
|
||||
* Index a non-existing note.
|
||||
@@ -43,7 +12,6 @@ export async function addToIndexAndMemCache(
|
||||
export function addNonExistingToIndex(name: string, parent: string): void {
|
||||
name = removeAnchors(name)
|
||||
const filename = name + (name.endsWith('.md') ? '' : '.md')
|
||||
if (cacheManager.getLiveDocument(filename)) return
|
||||
|
||||
const note: IndexedDocument = {
|
||||
path: filename,
|
||||
@@ -60,30 +28,7 @@ export function addNonExistingToIndex(name: string, parent: string): void {
|
||||
doesNotExist: true,
|
||||
parent,
|
||||
}
|
||||
SearchEngine.getEngine().addSingleToMinisearch(note.path)
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a file from the index, by its path.
|
||||
*/
|
||||
export function removeFromIndex(path: string): void {
|
||||
if (!isFileIndexable(path)) {
|
||||
console.info(`"${path}" is not an indexable file`)
|
||||
return
|
||||
}
|
||||
if (indexedList.has(path)) {
|
||||
SearchEngine.getEngine().removeFromMinisearch(path)
|
||||
|
||||
// FIXME: only remove non-existing notes if they don't have another parent
|
||||
// cacheManager
|
||||
// .getNonExistingNotesFromMemCache()
|
||||
// .filter(n => n.parent === path)
|
||||
// .forEach(n => {
|
||||
// removeFromIndex(n.path)
|
||||
// })
|
||||
} else {
|
||||
console.warn(`Omnisearch - Note not found under path ${path}`)
|
||||
}
|
||||
// searchEngine.addDocuments([note])
|
||||
}
|
||||
|
||||
const notesToReindex = new Set<TAbstractFile>()
|
||||
@@ -97,13 +42,8 @@ export function markNoteForReindex(note: TAbstractFile): void {
|
||||
}
|
||||
|
||||
export async function refreshIndex(): Promise<void> {
|
||||
if (notesToReindex.size > 0) {
|
||||
console.info(`Omnisearch - Reindexing ${notesToReindex.size} notes`)
|
||||
for (const note of notesToReindex) {
|
||||
removeFromIndex(note.path)
|
||||
await addToIndexAndMemCache(note)
|
||||
await wait(0)
|
||||
}
|
||||
notesToReindex.clear()
|
||||
}
|
||||
const paths = [...notesToReindex].map(n => n.path)
|
||||
searchEngine.removeFromPaths(paths)
|
||||
searchEngine.addFromPaths(paths)
|
||||
notesToReindex.clear()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user