diff --git a/packages/backend/src/core/SearchService.ts b/packages/backend/src/core/SearchService.ts index 1c18a52fae995123e489002967fe98c441a17e89..e68fde088dd8e7f35d7ed01d7a0e988e8754595c 100644 --- a/packages/backend/src/core/SearchService.ts +++ b/packages/backend/src/core/SearchService.ts @@ -117,6 +117,7 @@ export class SearchService { public async searchNote(q: string, me: User | null, opts: { userId?: Note['userId'] | null; channelId?: Note['channelId'] | null; + host?: string | null; }, pagination: { untilId?: Note['id']; sinceId?: Note['id']; @@ -131,6 +132,13 @@ export class SearchService { if (pagination.sinceId) filter.qs.push({ op: '>', k: 'createdAt', v: this.idService.parse(pagination.sinceId).date.getTime() }); if (opts.userId) filter.qs.push({ op: '=', k: 'userId', v: opts.userId }); if (opts.channelId) filter.qs.push({ op: '=', k: 'channelId', v: opts.channelId }); + if (opts.host) { + if (opts.host === '.') { + // TODO: MeilisearchãŒ2023/05/07ç¾åœ¨å€¤ãŒNULLã‹ã©ã†ã‹ã®ã‚¯ã‚¨ãƒªãŒæ›¸ã‘ãªã„ + } else { + filter.qs.push({ op: '=', k: 'userHost', v: opts.host }); + } + } const res = await this.meilisearchNoteIndex!.search(q, { sort: ['createdAt:desc'], matchingStrategy: 'all', diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index 990ba526d99082149279ca20e80dad32a0f154a5..f6385400c3c778c2be6531332d621569244c8a65 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -42,8 +42,7 @@ export const paramDef = { offset: { type: 'integer', default: 0 }, host: { type: 'string', - nullable: true, - description: 'The local host is represented with `null`.', + description: 'The local host is represented with `.`.', }, userId: { type: 'string', format: 'misskey:id', nullable: true, default: null }, channelId: { type: 'string', format: 'misskey:id', nullable: true, default: null }, @@ -73,6 +72,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { const notes = await this.searchService.searchNote(ps.query, me, { userId: ps.userId, channelId: ps.channelId, + host: ps.host, }, { untilId: ps.untilId, sinceId: ps.sinceId,