UNPKG

advanced-search-library

Version:

Intelligent search library with typo correction, autocomplete, and flexible data structure support

116 lines (101 loc) 3.79 kB
/** * Advanced Search Library - Basic Usage Example * * @author Rıdvan Sevindik <sevindikbusiness@gmail.com> * @github https://github.com/Ridvan0 * @linkedin https://www.linkedin.com/in/ridvansevindik/ */ const AdvancedSearch = require('../src/AdvancedSearch'); // Create search instance const search = new AdvancedSearch(); // Sample data - flexible structure const products = [ { id: 1, name: "Turkish Coffee", category: "Beverage", price: 45, description: "Traditional Turkish coffee blend", tags: ["hot", "traditional", "coffee"] }, { id: 2, name: "Drum Set", category: "Music", price: 2500, description: "Professional 5-piece acoustic drum set", tags: ["drum", "acoustic", "professional"] }, { id: 3, name: "Smartphone", category: "Electronics", price: 15000, description: "Latest model with high-resolution camera", tags: ["phone", "smart", "mobile"] } ]; // Add data to search index search.addData(products); console.log('🔍 Advanced Search Library - Basic Usage\n'); // Basic search console.log('1. Basic Search:'); const results1 = search.search('coffee'); console.log(` "coffee" search found ${results1.length} results:`); results1.forEach(item => { console.log(` - ${item.name} (Score: ${item.relevanceScore})`); }); // Typo correction console.log('\n2. Typo Correction:'); const results2 = search.search('cofee'); // Missing 'f' console.log(` "cofee" (typo) search found ${results2.length} results:`); results2.forEach(item => { console.log(` - ${item.name} (Score: ${item.relevanceScore})`); }); // Autocomplete console.log('\n3. Autocomplete:'); const suggestions = search.autocomplete('pho'); console.log(` "pho" autocomplete suggestions: [${suggestions.join(', ')}]`); // Multi-word search console.log('\n4. Multi-word Search:'); const results3 = search.search('drum set'); console.log(` "drum set" search found ${results3.length} results:`); results3.forEach(item => { console.log(` - ${item.name} (Score: ${item.relevanceScore})`); }); // Filtering console.log('\n5. Category Filter:'); const results4 = search.search('', { category: 'Electronics' }); console.log(` Electronics category has ${results4.length} items:`); results4.forEach(item => { console.log(` - ${item.name} - $${item.price}`); }); // Price range filter console.log('\n6. Price Range Filter:'); const results5 = search.search('', { priceRange: [40, 100] }); console.log(` Price range $40-100 has ${results5.length} items:`); results5.forEach(item => { console.log(` - ${item.name} - $${item.price}`); }); // Sorting console.log('\n7. Sorting by Price:'); const results6 = search.search('', { sortBy: 'price_asc' }); console.log(` All products sorted by price (ascending):`); results6.forEach(item => { console.log(` - ${item.name} - $${item.price}`); }); // Search history console.log('\n8. Search History:'); const history = search.getSearchHistory(); console.log(` Recent searches (${history.length} total):`); history.slice(0, 5).forEach(entry => { console.log(` - "${entry.query}" at ${new Date(entry.timestamp).toLocaleTimeString()}`); }); // Statistics console.log('\n9. Statistics:'); const stats = search.getStats(); console.log(` Total items: ${stats.totalItems}`); console.log(` Total searches: ${stats.totalSearches}`); console.log(` Unique searches: ${stats.uniqueSearches}`); console.log(` Average results per search: ${stats.averageResultsPerSearch.toFixed(2)}`); console.log('\n✅ Basic usage example completed!');