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
JavaScript
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 };