This commit is contained in:
Simon Cambier
2023-08-22 07:53:07 +02:00
5 changed files with 20 additions and 17 deletions

View File

@@ -103,7 +103,7 @@ export default class OmnisearchPlugin extends Plugin {
if (isFileIndexable(file.path)) { if (isFileIndexable(file.path)) {
logDebug('Renaming file', file.path) logDebug('Renaming file', file.path)
cacheManager.removeFromLiveCache(oldPath) cacheManager.removeFromLiveCache(oldPath)
cacheManager.addToLiveCache(file.path) await cacheManager.addToLiveCache(file.path)
searchEngine.removeFromPaths([oldPath]) searchEngine.removeFromPaths([oldPath])
await searchEngine.addFromPaths([file.path]) await searchEngine.addFromPaths([file.path])
} }
@@ -206,14 +206,14 @@ export default class OmnisearchPlugin extends Plugin {
// Disable settings.useCache while writing the cache, in case it freezes // Disable settings.useCache while writing the cache, in case it freezes
settings.useCache = false settings.useCache = false
saveSettings(this) await saveSettings(this)
// Write the cache // Write the cache
await searchEngine.writeToCache() await searchEngine.writeToCache()
// Re-enable settings.caching // Re-enable settings.caching
settings.useCache = true settings.useCache = true
saveSettings(this) await saveSettings(this)
} }
console.timeEnd('Omnisearch - Indexing total time') console.timeEnd('Omnisearch - Indexing total time')

View File

@@ -43,7 +43,7 @@ export async function refreshIndex(): Promise<void> {
const paths = [...notesToReindex].map(n => n.path) const paths = [...notesToReindex].map(n => n.path)
if (paths.length) { if (paths.length) {
searchEngine.removeFromPaths(paths) searchEngine.removeFromPaths(paths)
searchEngine.addFromPaths(paths) await searchEngine.addFromPaths(paths)
notesToReindex.clear() notesToReindex.clear()
// console.log(`Omnisearch - Reindexed ${paths.length} file(s)`) // console.log(`Omnisearch - Reindexed ${paths.length} file(s)`)
} }

View File

@@ -25,6 +25,12 @@ import { sortBy } from 'lodash-es'
const tokenize = (text: string): string[] => { const tokenize = (text: string): string[] => {
let tokens = text.split(SPACE_OR_PUNCTUATION) let tokens = text.split(SPACE_OR_PUNCTUATION)
// Split hyphenated tokens
tokens = [...tokens, ...tokens.flatMap(splitHyphens)]
// Split camelCase tokens into "camel" and "case
tokens = [...tokens, ...tokens.flatMap(splitCamelCase)]
// When enabled, we only use the chsSegmenter, // When enabled, we only use the chsSegmenter,
// and not the other custom tokenizers // and not the other custom tokenizers
const chsSegmenter = getChsSegmenter() const chsSegmenter = getChsSegmenter()
@@ -32,12 +38,8 @@ const tokenize = (text: string): string[] => {
tokens = tokens.flatMap(word => tokens = tokens.flatMap(word =>
chsRegex.test(word) ? chsSegmenter.cut(word) : [word] chsRegex.test(word) ? chsSegmenter.cut(word) : [word]
) )
} else {
// Split camelCase tokens into "camel" and "case
tokens = [...tokens, ...tokens.flatMap(splitCamelCase)]
// Split hyphenated tokens
tokens = [...tokens, ...tokens.flatMap(splitHyphens)]
} }
return tokens return tokens
} }

View File

@@ -507,9 +507,9 @@ export class SettingsTab extends PluginSettingTab {
cb.setLimits(1, 5, 0.1) cb.setLimits(1, 5, 0.1)
.setValue(settings[key]) .setValue(settings[key])
.setDynamicTooltip() .setDynamicTooltip()
.onChange(v => { .onChange(async (v) => {
settings[key] = v settings[key] = v
saveSettings(this.plugin) await saveSettings(this.plugin)
}) })
} }
} }

View File

@@ -342,14 +342,15 @@ export function chunkArray<T>(arr: T[], len: number): T[][] {
* @param text * @param text
*/ */
export function splitCamelCase(text: string): string[] { export function splitCamelCase(text: string): string[] {
const split = text // if no camel case found, do nothing
if (!/[a-z][A-Z]/.test(text)) {
return [];
}
const splittedText = text
.replace(/([a-z](?=[A-Z]))/g, '$1 ') .replace(/([a-z](?=[A-Z]))/g, '$1 ')
.split(' ') .split(' ')
.filter(t => t) .filter(t => t);
if (split.length > 1) { return splittedText;
return split
}
return []
} }
/** /**