mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +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) {
|
async function getFullTextResults(searchText) {
|
||||||
const tokens = searchText.toLowerCase().split(" ");
|
const safeSearchText = utils.sanitizeSql(searchText);
|
||||||
const tokenSql = ["1=1"];
|
|
||||||
|
|
||||||
for (const token of tokens) {
|
return await sql.getColumn(`SELECT noteId FROM note_fulltext
|
||||||
const safeToken = utils.sanitizeSql(token);
|
WHERE note_fulltext MATCH '${safeSearchText}'`);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function saveSearchToNote(req) {
|
async function saveSearchToNote(req) {
|
||||||
|
@ -5,7 +5,7 @@ const html2plaintext = require('html2plaintext');
|
|||||||
const noteIdQueue = [];
|
const noteIdQueue = [];
|
||||||
|
|
||||||
async function updateNoteFulltext(note) {
|
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
|
await sql.execute(`DELETE
|
||||||
FROM note_fulltext
|
FROM note_fulltext
|
||||||
WHERE noteId = ?`, [note.noteId]);
|
WHERE noteId = ?`, [note.noteId]);
|
||||||
@ -25,7 +25,7 @@ async function updateNoteFulltext(note) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// optimistically try to update first ...
|
// 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
|
// ... and insert only when the update did not work
|
||||||
if (res.stmt.changes === 0) {
|
if (res.stmt.changes === 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user