diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-02-03 18:27:09 -0500 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-02-03 18:27:09 -0500 |
| commit | 47bf96988cbffabf55999e193337c840602a48d8 (patch) | |
| tree | bef066f9eedc67bee2fa5e37691c55a826e5cb87 /packages/backend/src/core/SearchService.ts | |
| parent | remove unused import in FileInfoService.ts (diff) | |
| download | sharkey-47bf96988cbffabf55999e193337c840602a48d8.tar.gz sharkey-47bf96988cbffabf55999e193337c840602a48d8.tar.bz2 sharkey-47bf96988cbffabf55999e193337c840602a48d8.zip | |
fix meilisearch merge
Diffstat (limited to 'packages/backend/src/core/SearchService.ts')
| -rw-r--r-- | packages/backend/src/core/SearchService.ts | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/packages/backend/src/core/SearchService.ts b/packages/backend/src/core/SearchService.ts index 431cc0234e..35c67400ba 100644 --- a/packages/backend/src/core/SearchService.ts +++ b/packages/backend/src/core/SearchService.ts @@ -175,7 +175,6 @@ export class SearchService { if (!['home', 'public'].includes(note.visibility)) return; await this.meilisearchNoteIndex?.deleteDocument(note.id); - await this.meilisearchNoteIndex?.deleteDocument(note.id); } @bindThis @@ -296,8 +295,47 @@ export class SearchService { } } + if (opts.filetype) { + if (opts.filetype === 'image') { + filter.qs.push({ op: 'or', qs: [ + { op: '=', k: 'attachedFileTypes', v: 'image/webp' }, + { op: '=', k: 'attachedFileTypes', v: 'image/png' }, + { op: '=', k: 'attachedFileTypes', v: 'image/jpeg' }, + { op: '=', k: 'attachedFileTypes', v: 'image/avif' }, + { op: '=', k: 'attachedFileTypes', v: 'image/apng' }, + { op: '=', k: 'attachedFileTypes', v: 'image/gif' }, + ] }); + } else if (opts.filetype === 'video') { + filter.qs.push({ op: 'or', qs: [ + { op: '=', k: 'attachedFileTypes', v: 'video/mp4' }, + { op: '=', k: 'attachedFileTypes', v: 'video/webm' }, + { op: '=', k: 'attachedFileTypes', v: 'video/mpeg' }, + { op: '=', k: 'attachedFileTypes', v: 'video/x-m4v' }, + ] }); + } else if (opts.filetype === 'audio') { + filter.qs.push({ op: 'or', qs: [ + { op: '=', k: 'attachedFileTypes', v: 'audio/mpeg' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/flac' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/wav' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/aac' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/webm' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/opus' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/ogg' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-m4a' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/mod' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/s3m' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/xm' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/it' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-mod' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-s3m' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-xm' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-it' }, + ] }); + } + } + const res = await this.meilisearchNoteIndex.search(q, { - sort: ['createdAt:desc'], + sort: [`createdAt:${opts.order ? opts.order : 'desc'}`], matchingStrategy: 'all', attributesToRetrieve: ['id', 'createdAt'], filter: compileQuery(filter), |