UNPKG

@zanreal/search

Version:

A powerful TypeScript fuzzy search library with intelligent scoring, exact match prioritization, and automatic field detection for any object structure

73 lines 2.58 kB
/** * Universal Search Engine * Provides fuzzy search with intelligent scoring, exact match prioritization, * and automatic field detection for any object structure. */ export interface SearchOptions { /** Fields to search in (if not provided, will search all string fields) */ fields?: string[]; /** Custom field weights (higher = more important) */ fieldWeights?: Record<string, number>; /** Minimum similarity threshold for fuzzy matching (0-1) */ fuzzyThreshold?: number; /** Minimum query length for fuzzy matching */ minFuzzyLength?: number; /** Maximum number of results to return */ limit?: number; /** Case sensitive search */ caseSensitive?: boolean; } /** Exported default search options */ export declare const DEFAULT_SEARCH_OPTIONS: { fieldWeights: Record<string, number>; fuzzyThreshold: number; minFuzzyLength: number; limit: number; caseSensitive: boolean; }; export interface SearchResult<T> { item: T; score: number; matches: SearchMatch[]; } export interface SearchMatch { field: string; value: string; score: number; type: "exact-start" | "exact-contain" | "fuzzy"; position?: number; } /** * Universal search function that works with any data structure * Optimized for memory efficiency and performance */ export declare function search<T>(data: T[], query: string, options?: SearchOptions): SearchResult<T>[]; /** * Simplified search function that returns just the items */ export declare function searchItems<T>(data: T[], query: string, options?: SearchOptions): T[]; /** * Search with field-specific configuration */ export declare function createSearcher<T>(config: SearchOptions): (data: T[], query: string, overrides?: Partial<SearchOptions>) => SearchResult<T>[]; /** * Create a search function with common default options for documents */ export declare function createDocumentSearcher<T>(): (data: T[], query: string, overrides?: Partial<SearchOptions>) => SearchResult<T>[]; /** * Quick search function with sensible defaults for most use cases */ export declare function quickSearch<T>(data: T[], query: string, fields?: string[]): T[]; /** * Clear all internal caches to free memory * Useful for long-running applications or when switching between different datasets */ export declare function clearSearchCaches(): void; /** * Get cache statistics for monitoring memory usage */ export declare function getCacheStats(): { stringProcessingCacheSize: number; searchCallCount: number; }; //# sourceMappingURL=index.d.ts.map