fix fulltext search

This commit is contained in:
zadam 2019-03-11 19:50:13 +01:00
parent d25a1e3ed9
commit dd9b7bbbb5
2 changed files with 5 additions and 21 deletions

View File

@ -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) {

View File

@ -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) {