Skip to content

Commit

Permalink
fix searching fulltext with tags, closes #4661
Browse files Browse the repository at this point in the history
  • Loading branch information
zadam committed Mar 2, 2024
1 parent 1f95e88 commit 2d19f07
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions src/services/search/expressions/note_content_fulltext.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,18 +111,31 @@ class NoteContentFulltextExp extends Expression {

if (type === 'text' && mime === 'text/html') {
if (!this.raw && content.length < 20000) { // striptags is slow for very large notes
// allow link to preserve URLs: https://github.com/zadam/trilium/issues/2412
content = striptags(content, ['a'], ' ');

// at least the closing tag can be easily stripped
content = content.replace(/<\/a>/ig, "");
content = this.stripTags(content);
}

content = content.replace(/&nbsp;/g, ' ');
}

return content.trim();
}

stripTags(content) {
// we want to allow link to preserve URLs: https://github.com/zadam/trilium/issues/2412
// we want to insert space in place of block tags (because they imply text separation)
// but we don't want to insert text for typical formatting inline tags which can occur within one word
const linkTag = 'a';
const inlineFormattingTags = ['b', 'strong', 'em', 'i', 'span', 'big', 'small', 'font', 'sub', 'sup'];

// replace tags which imply text separation with a space
content = striptags(content, [linkTag, ...inlineFormattingTags], ' ');

// replace the inline formatting tags (but not links) without a space
content = striptags(content, [linkTag], '');

// at least the closing link tag can be easily stripped
return content.replace(/<\/a>/ig, "");
}
}

module.exports = NoteContentFulltextExp;

0 comments on commit 2d19f07

Please sign in to comment.