mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	fix fulltext search
This commit is contained in:
		
							parent
							
								
									d25a1e3ed9
								
							
						
					
					
						commit
						dd9b7bbbb5
					
				@ -52,26 +52,10 @@ async function searchNotes(req) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function getFullTextResults(searchText) {
 | 
			
		||||
    const tokens = searchText.toLowerCase().split(" ");
 | 
			
		||||
    const tokenSql = ["1=1"];
 | 
			
		||||
    const safeSearchText = utils.sanitizeSql(searchText);
 | 
			
		||||
 | 
			
		||||
    for (const token of tokens) {
 | 
			
		||||
        const safeToken = utils.sanitizeSql(token);
 | 
			
		||||
 | 
			
		||||
        tokenSql.push(`(title LIKE '%${safeToken}%' OR content LIKE '%${safeToken}%')`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const noteIds = await sql.getColumn(`
 | 
			
		||||
      SELECT DISTINCT noteId 
 | 
			
		||||
      FROM 
 | 
			
		||||
        notes
 | 
			
		||||
        JOIN note_contents USING(noteId)
 | 
			
		||||
      WHERE isDeleted = 0 
 | 
			
		||||
        AND notes.isProtected = 0
 | 
			
		||||
        AND type IN ('text', 'code')
 | 
			
		||||
        AND ${tokenSql.join(' AND ')}`);
 | 
			
		||||
 | 
			
		||||
    return noteIds;
 | 
			
		||||
    return await sql.getColumn(`SELECT noteId FROM note_fulltext 
 | 
			
		||||
                                       WHERE note_fulltext MATCH '${safeSearchText}'`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function saveSearchToNote(req) {
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ const html2plaintext = require('html2plaintext');
 | 
			
		||||
const noteIdQueue = [];
 | 
			
		||||
 | 
			
		||||
async function updateNoteFulltext(note) {
 | 
			
		||||
    if (note.isDeleted || note.isProtected || note.hasLabel('archived')) {
 | 
			
		||||
    if (note.isDeleted || note.isProtected || await note.hasLabel('archived')) {
 | 
			
		||||
        await sql.execute(`DELETE
 | 
			
		||||
                           FROM note_fulltext
 | 
			
		||||
                           WHERE noteId = ?`, [note.noteId]);
 | 
			
		||||
@ -25,7 +25,7 @@ async function updateNoteFulltext(note) {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // optimistically try to update first ...
 | 
			
		||||
        const res = await sql.execute(`UPDATE note_fulltext title = ?, titleHash = ?, content = ?, contentHash = ? WHERE noteId = ?`, [note.title, note.hash, content, contentHash, note.noteId]);
 | 
			
		||||
        const res = await sql.execute(`UPDATE note_fulltext SET title = ?, titleHash = ?, content = ?, contentHash = ? WHERE noteId = ?`, [note.title, note.hash, content, contentHash, note.noteId]);
 | 
			
		||||
 | 
			
		||||
        // ... and insert only when the update did not work
 | 
			
		||||
        if (res.stmt.changes === 0) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user