integrate new search into the main global search

This commit is contained in:
zadam 2020-05-24 09:30:08 +02:00
parent cb4d0624b5
commit b5627b138a
6 changed files with 45 additions and 36 deletions

44
package-lock.json generated
View File

@ -3385,9 +3385,9 @@
} }
}, },
"electron-debug": { "electron-debug": {
"version": "3.0.1", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.0.1.tgz", "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.1.0.tgz",
"integrity": "sha512-fo3mtDM4Bxxm3DW1I+XcJKfQlUlns4QGWyWGs8OrXK1bBZ2X9HeqYMntYBx78MYRcGY5S/ualuG4GhCnPlaZEA==", "integrity": "sha512-SWEqLj4MgfV3tGuO5eBLQ5/Nr6M+KPxsnE0bUJZvQebGJus6RAcdmvd7L+l0Ji31h2mmrN23l2tHFtCa2FvurA==",
"requires": { "requires": {
"electron-is-dev": "^1.1.0", "electron-is-dev": "^1.1.0",
"electron-localshortcut": "^3.1.0" "electron-localshortcut": "^3.1.0"
@ -3568,29 +3568,19 @@
"integrity": "sha1-UJ5RDCala1Xhf4Y6SwThEYRqsns=" "integrity": "sha1-UJ5RDCala1Xhf4Y6SwThEYRqsns="
}, },
"electron-is-dev": { "electron-is-dev": {
"version": "1.1.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz", "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz",
"integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ==" "integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw=="
}, },
"electron-localshortcut": { "electron-localshortcut": {
"version": "3.1.0", "version": "3.2.1",
"resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.1.0.tgz", "resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz",
"integrity": "sha512-MgL/j5jdjW7iA0R6cI7S045B0GlKXWM1FjjujVPjlrmyXRa6yH0bGSaIAfxXAF9tpJm3pLEiQzerYHkRh9JG/A==", "integrity": "sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==",
"requires": { "requires": {
"debug": "^2.6.8", "debug": "^4.0.1",
"electron-is-accelerator": "^0.1.0", "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" "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": { "electron-notarize": {
@ -6507,9 +6497,9 @@
"integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ=="
}, },
"keyboardevent-from-electron-accelerator": { "keyboardevent-from-electron-accelerator": {
"version": "1.1.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-1.1.0.tgz", "resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz",
"integrity": "sha512-VDC4vKWGrR3VgIKCE4CsXnvObGgP8C2idnTKEMUkuEuvDGE1GEBX9FtNdJzrD00iQlhI3xFxRaeItsUmlERVng==" "integrity": "sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA=="
}, },
"keyboardevents-areequal": { "keyboardevents-areequal": {
"version": "0.2.2", "version": "0.2.2",
@ -10338,9 +10328,9 @@
"dev": true "dev": true
}, },
"sqlite": { "sqlite": {
"version": "4.0.7", "version": "4.0.8",
"resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.0.7.tgz", "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.0.8.tgz",
"integrity": "sha512-1bBO+me3gXRfqwRR3K9aNDoSbTkQ87o6fSjj/BE2gSHHsK3qIDR+LoFZHgZ6kSPdFBoLTsy5/w/+8PBBaK+lvg==" "integrity": "sha512-MOy63kITfjJnZimrwgQ50+L83J3IBPjuyTZ98YooAmSXdLtfGHDTMgH5csWturZ/mzm4TafLvtjkIbhmQVNgcw=="
}, },
"sqlite3": { "sqlite3": {
"version": "4.1.1", "version": "4.1.1",

View File

@ -32,7 +32,7 @@
"dayjs": "1.8.27", "dayjs": "1.8.27",
"debug": "4.1.1", "debug": "4.1.1",
"ejs": "3.1.3", "ejs": "3.1.3",
"electron-debug": "3.0.1", "electron-debug": "3.1.0",
"electron-dl": "3.0.0", "electron-dl": "3.0.0",
"electron-find": "1.0.6", "electron-find": "1.0.6",
"electron-window-state": "5.0.3", "electron-window-state": "5.0.3",
@ -67,7 +67,7 @@
"serve-favicon": "2.5.0", "serve-favicon": "2.5.0",
"session-file-store": "1.4.0", "session-file-store": "1.4.0",
"simple-node-logger": "18.12.24", "simple-node-logger": "18.12.24",
"sqlite": "4.0.7", "sqlite": "4.0.8",
"sqlite3": "4.1.1", "sqlite3": "4.1.1",
"string-similarity": "4.0.1", "string-similarity": "4.0.1",
"tar-stream": "2.1.2", "tar-stream": "2.1.2",

View File

@ -48,8 +48,8 @@ export default class SearchResultsWidget extends BasicWidget {
for (const result of results) { for (const result of results) {
const link = $('<a>', { const link = $('<a>', {
href: 'javascript:', href: 'javascript:',
text: result.title text: result.notePathTitle
}).attr('data-action', 'note').attr('data-note-path', result.path); }).attr('data-action', 'note').attr('data-note-path', result.notePath);
const $result = $('<li>').append(link); const $result = $('<li>').append(link);

View File

@ -4,15 +4,15 @@ const repository = require('../../services/repository');
const noteCacheService = require('../../services/note_cache/note_cache.js'); const noteCacheService = require('../../services/note_cache/note_cache.js');
const log = require('../../services/log'); const log = require('../../services/log');
const scriptService = require('../../services/script'); const scriptService = require('../../services/script');
const searchService = require('../../services/search'); const searchService = require('../../services/search/search');
async function searchNotes(req) { async function searchNotes(req) {
const noteIds = await searchService.searchForNoteIds(req.params.searchString); const notePaths = await searchService.searchNotes(req.params.searchString);
try { try {
return { return {
success: true, success: true,
results: noteIds.map(noteCacheService.getNotePath).filter(res => !!res) results: notePaths
} }
} }
catch { catch {

View File

@ -13,6 +13,7 @@ const PROP_MAPPING = {
"type": "type", "type": "type",
"mime": "mime", "mime": "mime",
"isprotected": "isProtected", "isprotected": "isProtected",
"isarhived": "isArchived",
"datecreated": "dateCreated", "datecreated": "dateCreated",
"datemodified": "dateModified", "datemodified": "dateModified",
"utcdatecreated": "utcDateCreated", "utcdatecreated": "utcDateCreated",

View File

@ -75,6 +75,23 @@ async function findNotesWithQuery(query, parsingContext) {
return await findNotesWithExpression(expression); 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) { async function searchNotesForAutocomplete(query) {
if (!query.trim().length) { if (!query.trim().length) {
return []; return [];
@ -85,7 +102,7 @@ async function searchNotesForAutocomplete(query) {
fuzzyAttributeSearch: true fuzzyAttributeSearch: true
}); });
let searchResults = findNotesWithQuery(query, parsingContext); let searchResults = await findNotesWithQuery(query, parsingContext);
searchResults = searchResults.slice(0, 200); searchResults = searchResults.slice(0, 200);
@ -154,6 +171,7 @@ function formatAttribute(attr) {
} }
module.exports = { module.exports = {
searchNotes,
searchNotesForAutocomplete, searchNotesForAutocomplete,
findNotesWithQuery findNotesWithQuery
}; };