From 703568dab3c19eb392db3fe2b02451be1f7f745e Mon Sep 17 00:00:00 2001 From: Simon Cambier Date: Sun, 17 Dec 2023 13:50:07 +0100 Subject: [PATCH] Fixed bug with diacritcs and quoted searches Also added more cached data --- src/cache-manager.ts | 4 ++++ src/globals.ts | 1 + src/search/omnisearch.ts | 11 +++++------ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/cache-manager.ts b/src/cache-manager.ts index f778525..9a96fbc 100644 --- a/src/cache-manager.ts +++ b/src/cache-manager.ts @@ -17,6 +17,8 @@ import { isFilenameIndexable, logDebug, makeMD5, + removeDiacritics, + stripMarkdownCharacters, } from './tools/utils' import type { CanvasData } from 'obsidian/canvas' import type { AsPlainObject } from 'minisearch' @@ -143,6 +145,8 @@ async function getAndMapIndexedDocument( return { basename: file.basename, content, + /** Content without diacritics and markdown chars */ + cleanedContent: stripMarkdownCharacters(removeDiacritics(content)), path: file.path, mtime: file.stat.mtime, diff --git a/src/globals.ts b/src/globals.ts index 86344c9..2c20d06 100644 --- a/src/globals.ts +++ b/src/globals.ts @@ -53,6 +53,7 @@ export type IndexedDocument = { mtime: number content: string + cleanedContent: string aliases: string tags: string[] unmarkedTags: string[] diff --git a/src/search/omnisearch.ts b/src/search/omnisearch.ts index 4e3f141..b23d285 100644 --- a/src/search/omnisearch.ts +++ b/src/search/omnisearch.ts @@ -13,7 +13,6 @@ import { removeDiacritics, splitCamelCase, splitHyphens, - stripMarkdownCharacters, } from '../tools/utils' import { Notice } from 'obsidian' import type { Query } from './query' @@ -321,10 +320,10 @@ export class Omnisearch { results = results.filter(r => { const document = documents.find(d => d.path === r.id) const title = document?.path.toLowerCase() ?? '' - const content = stripMarkdownCharacters( - document?.content ?? '' - ).toLowerCase() - return exactTerms.every(q => content.includes(q) || title.includes(q)) + const content = (document?.cleanedContent ?? '').toLowerCase() + return exactTerms.every( + q => content.includes(q) || removeDiacritics(title).includes(q) + ) }) } @@ -333,7 +332,7 @@ export class Omnisearch { if (exclusions.length) { logDebug('Filtering with exclusions') results = results.filter(r => { - const content = stripMarkdownCharacters( + const content = ( documents.find(d => d.path === r.id)?.content ?? '' ).toLowerCase() return exclusions.every(q => !content.includes(q))