advanced-search-library
Version:
Intelligent search library with typo correction, autocomplete, and flexible data structure support
116 lines (101 loc) • 3.79 kB
JavaScript
/**
* 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!');