- docs/SEARCH-QUALITY.md: the bake-off close record — corpus v1 (75 cases) x
gazetteer v1 (30 entries), measured 2026-10-23T17:02Z via npm run search:corpus
- top-1 66/68 (97.1%), top-3 68/68 (100.0%) >= 90% threshold
- negatives refused 7/7, refusal margin 0.643 < 0.72 admission line
- per-category table (landmark/abbreviation/glued/typo/alias all 100%)
- escalation lever: None — met on first run; no abbreviations.ts row, no
alias, no corpus edit; the fixed ladder was never climbed
- coordinate verification: 10 seed entries spot-checked against Nominatim
(identifying UA, 1 req/s): 8/10 within 0.01°; bukit-bintang outlier is an
area-vs-point discrepancy (no change); pavilion-kl was a real ~2 km error
- both top-1 misses documented as expected disjoint-tier behaviour
- kl-gazetteer.json: pavilion-kl coordinate corrected (3.1478,101.695) ->
(3.149,101.7132) — Rule 1 data bug found by the prescribed Nominatim
verification; post-fix delta 0.0002°; corpus is coordinate-blind, all suites green
279 lines
8.4 KiB
JSON
279 lines
8.4 KiB
JSON
{
|
|
"_license": "ODbL-1.0",
|
|
"_attribution": "© OpenStreetMap contributors",
|
|
"_notice": "Curated from OpenStreetMap data. The curated gazetteer and any derived index are made available under the Open Database License (ODbL) v1.0 — https://opendatacommons.org/licenses/odbl/1-0/",
|
|
"version": 1,
|
|
"entries": [
|
|
{
|
|
"id": "suria-klcc",
|
|
"name": "Suria KLCC",
|
|
"aliases": ["Suria KLCC", "KLCC", "KLCC Park", "KLCC Mall", "Jalan Ampang"],
|
|
"lat": 3.1578,
|
|
"lng": 101.7117,
|
|
"category": "mall",
|
|
"address": "Jalan Ampang, 50088 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "sunway-pyramid",
|
|
"name": "Sunway Pyramid",
|
|
"aliases": ["Sunway Pyramid", "Pyramid", "Sunway", "Sunway Pyramid Shopping Mall"],
|
|
"lat": 3.0726,
|
|
"lng": 101.6069,
|
|
"category": "mall",
|
|
"address": "Jalan PJS 11/15, Bandar Sunway, 47500 Subang Jaya"
|
|
},
|
|
{
|
|
"id": "the-duke",
|
|
"name": "Lebuhraya DUKE",
|
|
"aliases": ["Lebuhraya DUKE", "DUKE", "Duta-Ulu Klang Expressway", "Karak Link"],
|
|
"lat": 3.1357,
|
|
"lng": 101.6864,
|
|
"category": "highway",
|
|
"address": "Lebuhraya DUKE, 50000 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "pavilion-kl",
|
|
"name": "Pavilion Kuala Lumpur",
|
|
"aliases": ["Pavilion Kuala Lumpur", "Pavilion", "Pavilion KL", "KL Pavilion"],
|
|
"lat": 3.149,
|
|
"lng": 101.7132,
|
|
"category": "mall",
|
|
"address": "Jalan Bukit Bintang, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "ijnp",
|
|
"name": "Institut Jantung Negara",
|
|
"aliases": ["Institut Jantung Negara", "IJN", "IJN Hospital", "Institut Jantung Negara Malaysia"],
|
|
"lat": 3.1636,
|
|
"lng": 101.706,
|
|
"category": "hospital",
|
|
"address": "Jalan Tun Razak, 50400 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "pwtc",
|
|
"name": "PWTC",
|
|
"aliases": ["PWTC", "Putra World Trade Centre"],
|
|
"lat": 3.1768,
|
|
"lng": 101.698,
|
|
"category": "convention",
|
|
"address": "Jalan Tun Razak, 50400 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "kl-sentral",
|
|
"name": "KL Sentral",
|
|
"aliases": ["KL Sentral", "Stesen KL Sentral", "KL Central", "Sentral Station", "Stesen Sentral"],
|
|
"lat": 3.1343,
|
|
"lng": 101.6869,
|
|
"category": "station",
|
|
"address": "Jalan Stesen Sentral 5, 50470 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "bangsar",
|
|
"name": "Taman Bangsar",
|
|
"aliases": ["Taman Bangsar", "Bangsar", "Bangsar Park"],
|
|
"lat": 3.1477,
|
|
"lng": 101.6875,
|
|
"category": "park",
|
|
"address": "Jalan Maarof, 59000 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "kampung-ampang",
|
|
"name": "Kampung Ampang",
|
|
"aliases": ["Kampung Ampang", "Kg Ampang", "Ampang Village"],
|
|
"lat": 3.1456,
|
|
"lng": 101.712,
|
|
"category": "village",
|
|
"address": "Jalan Ampang, 68000 Ampang"
|
|
},
|
|
{
|
|
"id": "tun-razak",
|
|
"name": "Jalan Tun Razak",
|
|
"aliases": ["Jalan Tun Razak", "Tun Razak"],
|
|
"lat": 3.156,
|
|
"lng": 101.71,
|
|
"category": "road",
|
|
"address": "Jalan Tun Razak, 50400 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "sungei-wang",
|
|
"name": "Sungei Wang Plaza",
|
|
"aliases": ["Sungei Wang Plaza", "Sungei Wang", "Sg Wang", "Sungai Wang"],
|
|
"lat": 3.1483,
|
|
"lng": 101.7068,
|
|
"category": "mall",
|
|
"address": "Jalan Bukit Bintang, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "berjaya-times-square",
|
|
"name": "Berjaya Times Square",
|
|
"aliases": ["Berjaya Times Square", "Times Square", "BTS"],
|
|
"lat": 3.1421,
|
|
"lng": 101.7101,
|
|
"category": "mall",
|
|
"address": "1 Jalan Imbi, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "mid-valley",
|
|
"name": "Mid Valley Megamall",
|
|
"aliases": ["Mid Valley Megamall", "Mid Valley", "MV"],
|
|
"lat": 3.118,
|
|
"lng": 101.6779,
|
|
"category": "mall",
|
|
"address": "Lingkaran Syed Putra, 59200 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "sunway-velocity",
|
|
"name": "Sunway Velocity",
|
|
"aliases": ["Sunway Velocity", "Velocity", "Sunway Velocity Mall"],
|
|
"lat": 3.1355,
|
|
"lng": 101.729,
|
|
"category": "mall",
|
|
"address": "Lingkaran SV, Cheras, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "ioi-city-mall",
|
|
"name": "IOI City Mall",
|
|
"aliases": ["IOI City Mall", "IOI City"],
|
|
"lat": 2.9897,
|
|
"lng": 101.7376,
|
|
"category": "mall",
|
|
"address": "Lebuhraya Sultan Iskandar, 62502 Putrajaya"
|
|
},
|
|
{
|
|
"id": "nu-sentral",
|
|
"name": "Nu Sentral",
|
|
"aliases": ["Nu Sentral", "KL Sentral Mall"],
|
|
"lat": 3.1335,
|
|
"lng": 101.6864,
|
|
"category": "mall",
|
|
"address": "201 Jalan Tun Sambanthan, 50470 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "merdeka-118",
|
|
"name": "Merdeka 118",
|
|
"aliases": ["Merdeka 118", "PNB 118"],
|
|
"lat": 3.1408,
|
|
"lng": 101.7047,
|
|
"category": "landmark",
|
|
"address": "Jalan Hang Jebat, 50150 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "kl-tower",
|
|
"name": "Kuala Lumpur Tower",
|
|
"aliases": ["Kuala Lumpur Tower", "KL Tower", "Menara Kuala Lumpur"],
|
|
"lat": 3.1528,
|
|
"lng": 101.7038,
|
|
"category": "landmark",
|
|
"address": "2 Jalan Punchak, 50250 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "petronas-twin-towers",
|
|
"name": "Petronas Twin Towers",
|
|
"aliases": ["Petronas Twin Towers", "Petronas Towers", "Twin Towers", "KLCC Towers"],
|
|
"lat": 3.1579,
|
|
"lng": 101.7116,
|
|
"category": "landmark",
|
|
"address": "Kuala Lumpur City Centre, 50088 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "aquaria-klcc",
|
|
"name": "Aquaria KLCC",
|
|
"aliases": ["Aquaria KLCC", "Aquaria"],
|
|
"lat": 3.1532,
|
|
"lng": 101.7104,
|
|
"category": "landmark",
|
|
"address": "Kuala Lumpur Convention Centre, Jalan Pinang, 50088 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "central-market",
|
|
"name": "Central Market",
|
|
"aliases": ["Central Market", "Pasar Seni", "Pasar Seni Kuala Lumpur"],
|
|
"lat": 3.1454,
|
|
"lng": 101.6953,
|
|
"category": "mall",
|
|
"address": "Jalan Hang Kasturi, 50050 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "petaling-street",
|
|
"name": "Petaling Street",
|
|
"aliases": ["Petaling Street", "Chi Cheong Kai", "Jalan Petaling"],
|
|
"lat": 3.1436,
|
|
"lng": 101.6975,
|
|
"category": "landmark",
|
|
"address": "Jalan Petaling, 50000 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "masjid-jamek",
|
|
"name": "Masjid Jamek",
|
|
"aliases": ["Masjid Jamek", "Jamek Mosque"],
|
|
"lat": 3.1484,
|
|
"lng": 101.6953,
|
|
"category": "landmark",
|
|
"address": "Jalan Tun Perak, 50050 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "pudu-raya",
|
|
"name": "Pudu Sentral",
|
|
"aliases": ["Pudu Sentral", "Pudu Raya", "Puduraya"],
|
|
"lat": 3.1381,
|
|
"lng": 101.7073,
|
|
"category": "station",
|
|
"address": "Jalan Pudu, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "bukit-bintang",
|
|
"name": "Bukit Bintang",
|
|
"aliases": ["Bukit Bintang", "BB Park", "Bukit Bintang KL"],
|
|
"lat": 3.1466,
|
|
"lng": 101.7106,
|
|
"category": "landmark",
|
|
"address": "Jalan Bukit Bintang, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "chinatown",
|
|
"name": "Chinatown Kuala Lumpur",
|
|
"aliases": ["Chinatown Kuala Lumpur", "Chinatown", "KL Chinatown"],
|
|
"lat": 3.1436,
|
|
"lng": 101.6959,
|
|
"category": "landmark",
|
|
"address": "Jalan Petaling, 50000 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "little-india-brickfields",
|
|
"name": "Brickfields",
|
|
"aliases": ["Brickfields", "Little India", "Little India Brickfields"],
|
|
"lat": 3.1306,
|
|
"lng": 101.6869,
|
|
"category": "landmark",
|
|
"address": "Jalan Tun Sambanthan, 50470 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "titiwangsa",
|
|
"name": "Taman Tasik Titiwangsa",
|
|
"aliases": ["Taman Tasik Titiwangsa", "Titiwangsa", "Lake Titiwangsa"],
|
|
"lat": 3.1714,
|
|
"lng": 101.7016,
|
|
"category": "park",
|
|
"address": "Jalan Temerloh, 53200 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "lake-gardens",
|
|
"name": "Perdana Botanical Garden",
|
|
"aliases": ["Perdana Botanical Garden", "Lake Gardens", "Taman Perdana"],
|
|
"lat": 3.143,
|
|
"lng": 101.6917,
|
|
"category": "park",
|
|
"address": "Jalan Kebun Bunga, 55100 Kuala Lumpur"
|
|
},
|
|
{
|
|
"id": "national-museum",
|
|
"name": "National Museum",
|
|
"aliases": ["National Museum", "Muzium Negara"],
|
|
"lat": 3.1378,
|
|
"lng": 101.687,
|
|
"category": "landmark",
|
|
"address": "Jalan Damansara, 50566 Kuala Lumpur"
|
|
}
|
|
]
|
|
}
|