1
0
mirror of https://github.com/immich-app/immich.git synced 2024-12-25 10:43:13 +02:00

fix(server): use current schema for search/explore (#2331)

This commit is contained in:
Jason Rasmussen 2023-04-25 13:21:07 -04:00 committed by GitHub
parent 82af2c5717
commit aa91b946fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -132,15 +132,13 @@ export class TypesenseRepository implements ISearchRepository {
} }
async explore(userId: string): Promise<SearchExploreItem<AssetEntity>[]> { async explore(userId: string): Promise<SearchExploreItem<AssetEntity>[]> {
const alias = await this.client.aliases(SearchCollection.ASSETS).retrieve();
const common = { const common = {
q: '*', q: '*',
filter_by: this.buildFilterBy('ownerId', userId, true), filter_by: this.buildFilterBy('ownerId', userId, true),
per_page: 100, per_page: 100,
}; };
const asset$ = this.client.collections<AssetEntity>(alias.collection_name).documents(); const asset$ = this.client.collections<AssetEntity>(assetSchema.name).documents();
const { facet_counts: facets } = await asset$.search({ const { facet_counts: facets } = await asset$.search({
...common, ...common,
@ -208,10 +206,8 @@ export class TypesenseRepository implements ISearchRepository {
} }
async searchAlbums(query: string, filters: SearchFilter): Promise<SearchResult<AlbumEntity>> { async searchAlbums(query: string, filters: SearchFilter): Promise<SearchResult<AlbumEntity>> {
const alias = await this.client.aliases(SearchCollection.ALBUMS).retrieve();
const results = await this.client const results = await this.client
.collections<AlbumEntity>(alias.collection_name) .collections<AlbumEntity>(albumSchema.name)
.documents() .documents()
.search({ .search({
q: query, q: query,
@ -223,9 +219,8 @@ export class TypesenseRepository implements ISearchRepository {
} }
async searchAssets(query: string, filters: SearchFilter): Promise<SearchResult<AssetEntity>> { async searchAssets(query: string, filters: SearchFilter): Promise<SearchResult<AssetEntity>> {
const alias = await this.client.aliases(SearchCollection.ASSETS).retrieve();
const results = await this.client const results = await this.client
.collections<AssetEntity>(alias.collection_name) .collections<AssetEntity>(assetSchema.name)
.documents() .documents()
.search({ .search({
q: query, q: query,
@ -248,12 +243,10 @@ export class TypesenseRepository implements ISearchRepository {
} }
async vectorSearch(input: number[], filters: SearchFilter): Promise<SearchResult<AssetEntity>> { async vectorSearch(input: number[], filters: SearchFilter): Promise<SearchResult<AssetEntity>> {
const alias = await this.client.aliases(SearchCollection.ASSETS).retrieve();
const { results } = await this.client.multiSearch.perform({ const { results } = await this.client.multiSearch.perform({
searches: [ searches: [
{ {
collection: alias.collection_name, collection: assetSchema.name,
q: '*', q: '*',
vector_query: `smartInfo.clipEmbedding:([${input.join(',')}], k:100)`, vector_query: `smartInfo.clipEmbedding:([${input.join(',')}], k:100)`,
per_page: 250, per_page: 250,