perf: reduce number of column returned by search query

This commit is contained in:
Hongbo Wu
2024-08-15 21:24:57 +08:00
parent 3a07b21ec7
commit 32097de62f
3 changed files with 12 additions and 34 deletions

View File

@ -58,7 +58,7 @@ export class LibraryItem {
@Column('text')
originalUrl!: string
@Column('text', { nullable: true })
@Column('text', { nullable: true, select: false })
downloadUrl?: string | null
@Column('text')
@ -138,10 +138,6 @@ export class LibraryItem {
@Column('text')
readableContent!: string
// NOT SUPPORTED IN TYPEORM
// @Column('vector', { nullable: true })
// embedding?: number[]
@Column('text', { nullable: true })
textContentHash?: string | null
@ -187,13 +183,13 @@ export class LibraryItem {
@Column('text', { nullable: true })
recommenderNames?: string[] | null
@Column('jsonb')
@Column('jsonb', { select: false })
links?: any | null
@Column('text')
feedContent?: string | null
@Column('text')
@Column('text', { select: false })
previewContentType?: string | null
@Column('text')
@ -205,18 +201,18 @@ export class LibraryItem {
@Column('text')
highlightAnnotations?: string[]
@Column('timestamptz')
@Column('timestamptz', { select: false })
seenAt?: Date
@Column('ltree')
@Column('ltree', { select: false })
topic?: string
@Column('timestamptz')
@Column('timestamptz', { select: false })
digestedAt?: Date
@Column('float')
@Column('float', { select: false })
score?: number
@Column('text')
@Column('text', { select: false })
previewContent?: string
}

View File

@ -4,9 +4,7 @@ import { RuleEventType } from './entity/rule'
import { env } from './env'
import { ReportType } from './generated/graphql'
import {
enqueueGeneratePreviewContentJob,
enqueueProcessYouTubeVideo,
enqueueScoreJob,
enqueueThumbnailJob,
enqueueTriggerRuleJob,
} from './utils/createTask'
@ -94,25 +92,6 @@ export const createPubSubClient = (): PubsubClient => {
logger.error('Failed to enqueue thumbnail job', e)
}
}
const hasPreviewContent = (
data: any
): data is { previewContent: string | null } => {
return 'previewContent' in data
}
// generate preview content if it is less than 180 characters
if (
!hasPreviewContent(data) ||
(data.previewContent && data.previewContent.length < 180)
) {
try {
const job = await enqueueGeneratePreviewContentJob(data.id, userId)
logger.info('Generate preview job created', { id: job?.id })
} catch (e) {
logger.error('Failed to enqueue generate preview job', e)
}
}
}
},
entityUpdated: async <T extends EntityEvent>(

View File

@ -642,7 +642,10 @@ export const createSearchQueryBuilder = (
// exclude content if not requested
const selects: Select[] = getColumns(libraryItemRepository)
.filter(
(select) => args.includeContent || select !== 'readableContent' //
(select) =>
args.includeContent ||
['readableContent', 'feedContent', 'previewContent'].indexOf(select) ===
-1
)
.map((column) => ({ column: `library_item.${column}` }))