@andrejs1979/document
Version:
MongoDB-compatible document database for NoSQL
103 lines • 3.14 kB
TypeScript
/**
* 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