29 lines
769 B
TypeScript
29 lines
769 B
TypeScript
|
|
/**
|
||
|
|
* Request Deduplicator Utility
|
||
|
|
* Provides key generation for request deduplication
|
||
|
|
*/
|
||
|
|
|
||
|
|
export class RequestDeduplicator {
|
||
|
|
/**
|
||
|
|
* Generate a unique key for search requests to enable deduplication
|
||
|
|
*/
|
||
|
|
static getSearchKey(
|
||
|
|
query: string,
|
||
|
|
k: number,
|
||
|
|
options: any
|
||
|
|
): string {
|
||
|
|
// Create a consistent key from search parameters
|
||
|
|
const optionsKey = options ? JSON.stringify({
|
||
|
|
metadata: options.metadata,
|
||
|
|
service: options.service,
|
||
|
|
searchMode: options.searchMode,
|
||
|
|
threshold: options.threshold,
|
||
|
|
includeVectors: options.includeVectors,
|
||
|
|
includeMetadata: options.includeMetadata,
|
||
|
|
sortBy: options.sortBy,
|
||
|
|
cursor: options.cursor
|
||
|
|
}) : '{}'
|
||
|
|
|
||
|
|
return `search:${query}:${k}:${optionsKey}`
|
||
|
|
}
|
||
|
|
}
|