@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
TypeScript
/**
* 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