Merge branch 'master' of https://github.com/scambier/obsidian-omnisearch
This commit is contained in:
@@ -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')
|
||||||
|
|||||||
@@ -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)`)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 []
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user