UNPKG

@andrejs1979/document

Version:

MongoDB-compatible document database for NoSQL

103 lines 3.14 kB
/** * NoSQL - Metadata and Tagging System * Intelligent document tagging and metadata management */ import { Document, TaggingConfig, QueryFilter, FindOptions, DocumentDatabaseConfig } from '../types'; import { DocumentStorage } from '../storage/document-storage'; /** * Advanced tagging and metadata management system */ export declare class TaggingSystem { private storage; private config; private tagCache; private tagHierarchy; private tagStats; constructor(storage: DocumentStorage, config: DocumentDatabaseConfig); /** * Automatically tag a document based on its content */ autoTag(collection: string, document: Document, taggingConfig?: TaggingConfig): Promise<string[]>; /** * Apply tags to a document */ tagDocument(collection: string, documentId: string, tags: string[], options?: { merge?: boolean; validate?: boolean; }): Promise<void>; /** * Remove tags from a document */ untagDocument(collection: string, documentId: string, tagsToRemove: string[]): Promise<void>; /** * Find documents by tags */ findByTags(collection: string, tags: string[], options?: { operator?: 'and' | 'or'; includeHierarchy?: boolean; findOptions?: FindOptions; }): Promise<Document[]>; /** * Get tag suggestions for a document */ getTagSuggestions(collection: string, document: Document, options?: { limit?: number; includePopular?: boolean; includeSimilar?: boolean; threshold?: number; }): Promise<string[]>; /** * Define tag hierarchy */ defineTagHierarchy(parentTag: string, childTags: string[]): Promise<void>; /** * Get tag statistics for a collection */ getTagStats(collection: string, options?: { limit?: number; sortBy?: 'count' | 'name' | 'recent'; includeUnused?: boolean; }): Promise<Array<{ tag: string; count: number; lastUsed: Date; percentage: number; }>>; /** * Clean up unused tags */ cleanupUnusedTags(collection: string, options?: { olderThan?: Date; usageThreshold?: number; }): Promise<{ removedTags: string[]; documentsUpdated: number; }>; /** * Bulk tag documents matching a filter */ bulkTag(collection: string, filter: QueryFilter, tags: string[], options?: { merge?: boolean; batchSize?: number; }): Promise<{ documentsUpdated: number; errors: string[]; }>; private extractContentTags; private extractMetadataTags; private extractFilenameTags; private applyTagMapping; private addHierarchicalTags; private expandTagsWithHierarchy; private updateTagStats; private cacheCollectionTags; private validateTags; private getPopularTags; private getSimilarDocumentTags; private scoreSuggestions; private extractText; private getTagCountsFromDocuments; private getSortCriteria; private persistTagHierarchy; } //# sourceMappingURL=tagging-system.d.ts.map