Fix military aircraft classification regex to reduce false positives (issue-1)
This commit is contained in:
+20
-17
@@ -111,21 +111,21 @@ export async function initAircraftDb() {
|
|||||||
db = new Database(DB_PATH);
|
db = new Database(DB_PATH);
|
||||||
db.exec(`
|
db.exec(`
|
||||||
CREATE TABLE IF NOT EXISTS aircraft (
|
CREATE TABLE IF NOT EXISTS aircraft (
|
||||||
icao TEXT PRIMARY KEY,
|
icao TEXT PRIMARY KEY,
|
||||||
built TEXT,
|
built TEXT,
|
||||||
categoryDescription TEXT,
|
categoryDescription TEXT,
|
||||||
country TEXT,
|
country TEXT,
|
||||||
engines TEXT,
|
engines TEXT,
|
||||||
class TEXT,
|
class TEXT,
|
||||||
manufacturer TEXT,
|
manufacturer TEXT,
|
||||||
model TEXT,
|
model TEXT,
|
||||||
modes TEXT,
|
modes TEXT,
|
||||||
operator TEXT,
|
operator TEXT,
|
||||||
operatorCallsign TEXT,
|
operatorCallsign TEXT,
|
||||||
owner TEXT,
|
owner TEXT,
|
||||||
registration TEXT,
|
registration TEXT,
|
||||||
serialNumber TEXT,
|
serialNumber TEXT,
|
||||||
aircraft TEXT
|
aircraft TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS military_ranges (start TEXT NOT NULL, end TEXT NOT NULL);
|
CREATE TABLE IF NOT EXISTS military_ranges (start TEXT NOT NULL, end TEXT NOT NULL);
|
||||||
@@ -220,7 +220,7 @@ async function syncMilitaryIcao() {
|
|||||||
try {
|
try {
|
||||||
const page = await fetch(ADSB_URL + ':8080').then(resp => resp.text());
|
const page = await fetch(ADSB_URL + ':8080').then(resp => resp.text());
|
||||||
const db = /databaseFolder = "(db-.+?)"/.exec(page);
|
const db = /databaseFolder = "(db-.+?)"/.exec(page);
|
||||||
const res = await fetch(ADSB_URL + `:8080/${db[1]}/ranges.js`);
|
const res = await fetch(ADSB_URL + `${db[1]}/ranges.js`);
|
||||||
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
||||||
const { military } = await res.json();
|
const { military } = await res.json();
|
||||||
db.exec('DELETE FROM military_ranges');
|
db.exec('DELETE FROM military_ranges');
|
||||||
@@ -243,7 +243,10 @@ export function classifyAircraft(row) {
|
|||||||
|
|
||||||
const matchesAny = (fields, list) => fields.some(f => {
|
const matchesAny = (fields, list) => fields.some(f => {
|
||||||
const value = normalizeName(f);
|
const value = normalizeName(f);
|
||||||
return value && list.some(k => value.includes(normalizeName(k)));
|
return value && list.some(k => {
|
||||||
|
const kw = normalizeName(k);
|
||||||
|
return kw && new RegExp('\\b' + kw.replace(/[.*+?^${}()|[\\]\\]/g, '\\$&') + '\\b', 'i').test(value);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const operators = [row.operator, row.operatorCallsign, row.owner];
|
const operators = [row.operator, row.operatorCallsign, row.owner];
|
||||||
|
|||||||
Reference in New Issue
Block a user