From b5627b138a5fc4bf4ed20496812e89eb85335740 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 24 May 2020 09:30:08 +0200 Subject: [PATCH] integrate new search into the main global search --- package-lock.json | 44 +++++++------------ package.json | 4 +- src/public/app/widgets/search_results.js | 6 +-- src/routes/api/search.js | 6 +-- .../search/expressions/property_comparison.js | 1 + src/services/search/search.js | 20 ++++++++- 6 files changed, 45 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e7f1cb65..dd61de609 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3385,9 +3385,9 @@ } }, "electron-debug": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.0.1.tgz", - "integrity": "sha512-fo3mtDM4Bxxm3DW1I+XcJKfQlUlns4QGWyWGs8OrXK1bBZ2X9HeqYMntYBx78MYRcGY5S/ualuG4GhCnPlaZEA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.1.0.tgz", + "integrity": "sha512-SWEqLj4MgfV3tGuO5eBLQ5/Nr6M+KPxsnE0bUJZvQebGJus6RAcdmvd7L+l0Ji31h2mmrN23l2tHFtCa2FvurA==", "requires": { "electron-is-dev": "^1.1.0", "electron-localshortcut": "^3.1.0" @@ -3568,29 +3568,19 @@ "integrity": "sha1-UJ5RDCala1Xhf4Y6SwThEYRqsns=" }, "electron-is-dev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz", - "integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz", + "integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==" }, "electron-localshortcut": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.1.0.tgz", - "integrity": "sha512-MgL/j5jdjW7iA0R6cI7S045B0GlKXWM1FjjujVPjlrmyXRa6yH0bGSaIAfxXAF9tpJm3pLEiQzerYHkRh9JG/A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz", + "integrity": "sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==", "requires": { - "debug": "^2.6.8", + "debug": "^4.0.1", "electron-is-accelerator": "^0.1.0", - "keyboardevent-from-electron-accelerator": "^1.1.0", + "keyboardevent-from-electron-accelerator": "^2.0.0", "keyboardevents-areequal": "^0.2.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } } }, "electron-notarize": { @@ -6507,9 +6497,9 @@ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" }, "keyboardevent-from-electron-accelerator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-1.1.0.tgz", - "integrity": "sha512-VDC4vKWGrR3VgIKCE4CsXnvObGgP8C2idnTKEMUkuEuvDGE1GEBX9FtNdJzrD00iQlhI3xFxRaeItsUmlERVng==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz", + "integrity": "sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==" }, "keyboardevents-areequal": { "version": "0.2.2", @@ -10338,9 +10328,9 @@ "dev": true }, "sqlite": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.0.7.tgz", - "integrity": "sha512-1bBO+me3gXRfqwRR3K9aNDoSbTkQ87o6fSjj/BE2gSHHsK3qIDR+LoFZHgZ6kSPdFBoLTsy5/w/+8PBBaK+lvg==" + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.0.8.tgz", + "integrity": "sha512-MOy63kITfjJnZimrwgQ50+L83J3IBPjuyTZ98YooAmSXdLtfGHDTMgH5csWturZ/mzm4TafLvtjkIbhmQVNgcw==" }, "sqlite3": { "version": "4.1.1", diff --git a/package.json b/package.json index 892152425..3ba80e1be 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "dayjs": "1.8.27", "debug": "4.1.1", "ejs": "3.1.3", - "electron-debug": "3.0.1", + "electron-debug": "3.1.0", "electron-dl": "3.0.0", "electron-find": "1.0.6", "electron-window-state": "5.0.3", @@ -67,7 +67,7 @@ "serve-favicon": "2.5.0", "session-file-store": "1.4.0", "simple-node-logger": "18.12.24", - "sqlite": "4.0.7", + "sqlite": "4.0.8", "sqlite3": "4.1.1", "string-similarity": "4.0.1", "tar-stream": "2.1.2", diff --git a/src/public/app/widgets/search_results.js b/src/public/app/widgets/search_results.js index 88aa434a9..0a5f1031a 100644 --- a/src/public/app/widgets/search_results.js +++ b/src/public/app/widgets/search_results.js @@ -48,8 +48,8 @@ export default class SearchResultsWidget extends BasicWidget { for (const result of results) { const link = $('', { href: 'javascript:', - text: result.title - }).attr('data-action', 'note').attr('data-note-path', result.path); + text: result.notePathTitle + }).attr('data-action', 'note').attr('data-note-path', result.notePath); const $result = $('
  • ').append(link); @@ -60,4 +60,4 @@ export default class SearchResultsWidget extends BasicWidget { searchFlowEndedEvent() { this.$searchResults.hide(); } -} \ No newline at end of file +} diff --git a/src/routes/api/search.js b/src/routes/api/search.js index a5596830d..1bbbfbc40 100644 --- a/src/routes/api/search.js +++ b/src/routes/api/search.js @@ -4,15 +4,15 @@ const repository = require('../../services/repository'); const noteCacheService = require('../../services/note_cache/note_cache.js'); const log = require('../../services/log'); const scriptService = require('../../services/script'); -const searchService = require('../../services/search'); +const searchService = require('../../services/search/search'); async function searchNotes(req) { - const noteIds = await searchService.searchForNoteIds(req.params.searchString); + const notePaths = await searchService.searchNotes(req.params.searchString); try { return { success: true, - results: noteIds.map(noteCacheService.getNotePath).filter(res => !!res) + results: notePaths } } catch { diff --git a/src/services/search/expressions/property_comparison.js b/src/services/search/expressions/property_comparison.js index 3a52f02df..7bd681bd8 100644 --- a/src/services/search/expressions/property_comparison.js +++ b/src/services/search/expressions/property_comparison.js @@ -13,6 +13,7 @@ const PROP_MAPPING = { "type": "type", "mime": "mime", "isprotected": "isProtected", + "isarhived": "isArchived", "datecreated": "dateCreated", "datemodified": "dateModified", "utcdatecreated": "utcDateCreated", diff --git a/src/services/search/search.js b/src/services/search/search.js index 5af43925b..79517ae49 100644 --- a/src/services/search/search.js +++ b/src/services/search/search.js @@ -75,6 +75,23 @@ async function findNotesWithQuery(query, parsingContext) { return await findNotesWithExpression(expression); } +async function searchNotes(query) { + if (!query.trim().length) { + return []; + } + + const parsingContext = new ParsingContext({ + includeNoteContent: true, + fuzzyAttributeSearch: false + }); + + let searchResults = await findNotesWithQuery(query, parsingContext); + + searchResults = searchResults.slice(0, 200); + + return searchResults; +} + async function searchNotesForAutocomplete(query) { if (!query.trim().length) { return []; @@ -85,7 +102,7 @@ async function searchNotesForAutocomplete(query) { fuzzyAttributeSearch: true }); - let searchResults = findNotesWithQuery(query, parsingContext); + let searchResults = await findNotesWithQuery(query, parsingContext); searchResults = searchResults.slice(0, 200); @@ -154,6 +171,7 @@ function formatAttribute(attr) { } module.exports = { + searchNotes, searchNotesForAutocomplete, findNotesWithQuery };