UNPKG

aishe-institutions-list

Version:

Searchable list of Indian colleges, universities, standalone institutions, and R&D centers from AISHE data

47 lines (38 loc) 1.62 kB
const institutions = require("./data/institutions.json"); function normalizeText(text) { return text.toLowerCase() .replace(/[^a-z0-9\s]/g, ' ') .replace(/\s+/g, ' ') .trim(); } function search(query, limit = 20) { if (!query) return []; const normalizedQuery = normalizeText(query); const queryWords = normalizedQuery.split(' ').filter(w => w.length > 0); const results = institutions.filter(inst => { const normalizedName = normalizeText(inst.name); const normalizedState = normalizeText(inst.state); const normalizedDistrict = inst.district ? normalizeText(inst.district) : ''; const aisheCode = inst.aishe_code?.toLowerCase() || ''; // Direct aishe code match (exact or partial) const cleanQuery = query.toLowerCase().replace(/[^a-z0-9]/g, ''); const cleanAisheCode = aisheCode.replace(/[^a-z0-9]/g, ''); if (aisheCode.includes(query.toLowerCase()) || cleanAisheCode.includes(cleanQuery)) return true; // Check if all query words match in name, state, or district return queryWords.every(word => normalizedName.includes(word) || normalizedState.includes(word) || normalizedDistrict.includes(word) ); }); // Remove duplicates based on normalized name and state const seen = new Set(); const uniqueResults = results.filter(inst => { const key = `${normalizeText(inst.name)}_${normalizeText(inst.state)}`; if (seen.has(key)) return false; seen.add(key); return true; }); return uniqueResults.slice(0, limit); } module.exports = { search };