@mailwoman/resolver-wof-sqlite 4.16.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/address-point-interpolation.d.ts.map +1 -1
- package/out/address-point-interpolation.js +6 -6
- package/out/address-point-interpolation.js.map +1 -1
- package/out/address-point-schema.d.ts +5 -6
- package/out/address-point-schema.d.ts.map +1 -1
- package/out/address-point-schema.js +7 -2
- package/out/address-point-schema.js.map +1 -1
- package/out/address-point.d.ts +22 -8
- package/out/address-point.d.ts.map +1 -1
- package/out/address-point.js +29 -13
- package/out/address-point.js.map +1 -1
- package/out/ancestry-backfill.d.ts +53 -0
- package/out/ancestry-backfill.d.ts.map +1 -0
- package/out/ancestry-backfill.js +150 -0
- package/out/ancestry-backfill.js.map +1 -0
- package/out/ancestry.d.ts +6 -6
- package/out/ancestry.d.ts.map +1 -1
- package/out/ancestry.js +6 -6
- package/out/ancestry.js.map +1 -1
- package/out/build-candidate-cli.d.ts.map +1 -1
- package/out/build-candidate-cli.js.map +1 -1
- package/out/build-candidate.d.ts +4 -5
- package/out/build-candidate.d.ts.map +1 -1
- package/out/build-candidate.js +15 -14
- package/out/build-candidate.js.map +1 -1
- package/out/build-coincident-roles-cli.d.ts.map +1 -1
- package/out/build-coincident-roles-cli.js.map +1 -1
- package/out/build-fts-cli.d.ts +1 -1
- package/out/build-fts-cli.d.ts.map +1 -1
- package/out/build-fts-cli.js +6 -6
- package/out/build-fts-cli.js.map +1 -1
- package/out/build-slim-cli.d.ts +1 -1
- package/out/build-slim-cli.d.ts.map +1 -1
- package/out/build-slim-cli.js +3 -3
- package/out/build-slim-cli.js.map +1 -1
- package/out/build-slim.d.ts +7 -8
- package/out/build-slim.d.ts.map +1 -1
- package/out/build-slim.js +9 -9
- package/out/build-slim.js.map +1 -1
- package/out/candidate-fts.d.ts +5 -7
- package/out/candidate-fts.d.ts.map +1 -1
- package/out/candidate-fts.js +5 -7
- package/out/candidate-fts.js.map +1 -1
- package/out/candidate-lookup.d.ts +7 -7
- package/out/candidate-lookup.d.ts.map +1 -1
- package/out/candidate-lookup.js +31 -35
- package/out/candidate-lookup.js.map +1 -1
- package/out/candidate-schema.d.ts +13 -14
- package/out/candidate-schema.d.ts.map +1 -1
- package/out/candidate-schema.js +9 -9
- package/out/candidate-schema.js.map +1 -1
- package/out/coincident-roles.d.ts +9 -11
- package/out/coincident-roles.d.ts.map +1 -1
- package/out/coincident-roles.js +7 -7
- package/out/coincident-roles.js.map +1 -1
- package/out/convention.d.ts +30 -35
- package/out/convention.d.ts.map +1 -1
- package/out/convention.js +19 -21
- package/out/convention.js.map +1 -1
- package/out/fst-autocomplete.d.ts +5 -5
- package/out/fst-autocomplete.d.ts.map +1 -1
- package/out/fst-autocomplete.js +12 -13
- package/out/fst-autocomplete.js.map +1 -1
- package/out/fst-builder.d.ts +7 -7
- package/out/fst-builder.d.ts.map +1 -1
- package/out/fst-builder.js +9 -9
- package/out/fst-builder.js.map +1 -1
- package/out/fst-deserialize-web.d.ts +4 -4
- package/out/fst-deserialize-web.d.ts.map +1 -1
- package/out/fst-deserialize-web.js +4 -4
- package/out/fst-deserialize-web.js.map +1 -1
- package/out/fst-matcher.d.ts +12 -12
- package/out/fst-matcher.d.ts.map +1 -1
- package/out/fst-matcher.js +25 -25
- package/out/fst-matcher.js.map +1 -1
- package/out/fst-serialize.d.ts +5 -5
- package/out/fst-serialize.d.ts.map +1 -1
- package/out/fst-serialize.js +7 -6
- package/out/fst-serialize.js.map +1 -1
- package/out/fst-types.d.ts +13 -13
- package/out/fts.d.ts +74 -80
- package/out/fts.d.ts.map +1 -1
- package/out/fts.js +65 -71
- package/out/fts.js.map +1 -1
- package/out/geo.d.ts +14 -15
- package/out/geo.d.ts.map +1 -1
- package/out/geo.js +8 -8
- package/out/geo.js.map +1 -1
- package/out/geonames-aliases.d.ts +18 -9
- package/out/geonames-aliases.d.ts.map +1 -1
- package/out/geonames-aliases.js +70 -12
- package/out/geonames-aliases.js.map +1 -1
- package/out/index.d.ts +9 -9
- package/out/index.js +7 -7
- package/out/interpolation.d.ts +8 -10
- package/out/interpolation.d.ts.map +1 -1
- package/out/interpolation.js +6 -6
- package/out/interpolation.js.map +1 -1
- package/out/lookup.d.ts +74 -81
- package/out/lookup.d.ts.map +1 -1
- package/out/lookup.js +114 -128
- package/out/lookup.js.map +1 -1
- package/out/postal-city-alias-lookup.d.ts +9 -10
- package/out/postal-city-alias-lookup.d.ts.map +1 -1
- package/out/postal-city-alias-lookup.js +13 -14
- package/out/postal-city-alias-lookup.js.map +1 -1
- package/out/postal-city-alias-schema.d.ts +5 -6
- package/out/postal-city-alias-schema.d.ts.map +1 -1
- package/out/postal-city-alias-schema.js +3 -4
- package/out/postal-city-alias-schema.js.map +1 -1
- package/out/postal-city-candidate-schema.d.ts +7 -10
- package/out/postal-city-candidate-schema.d.ts.map +1 -1
- package/out/postal-city-candidate-schema.js +4 -6
- package/out/postal-city-candidate-schema.js.map +1 -1
- package/out/postcode-point-lookup.d.ts +3 -4
- package/out/postcode-point-lookup.d.ts.map +1 -1
- package/out/postcode-point-lookup.js +2 -2
- package/out/postcode-point-lookup.js.map +1 -1
- package/out/reverse.d.ts +26 -29
- package/out/reverse.d.ts.map +1 -1
- package/out/reverse.js +36 -38
- package/out/reverse.js.map +1 -1
- package/out/schema.d.ts +32 -33
- package/out/schema.d.ts.map +1 -1
- package/out/sharding.d.ts +26 -28
- package/out/sharding.d.ts.map +1 -1
- package/out/sharding.js +16 -16
- package/out/sharding.js.map +1 -1
- package/out/sqlite-convention-source.d.ts +3 -3
- package/out/sqlite-convention-source.d.ts.map +1 -1
- package/out/sqlite-convention-source.js +6 -6
- package/out/sqlite-convention-source.js.map +1 -1
- package/out/sqlite-utils.d.ts +4 -5
- package/out/sqlite-utils.d.ts.map +1 -1
- package/out/sqlite-utils.js +4 -5
- package/out/sqlite-utils.js.map +1 -1
- package/out/street-morphology-fst-builder.d.ts +15 -18
- package/out/street-morphology-fst-builder.d.ts.map +1 -1
- package/out/street-morphology-fst-builder.js +17 -17
- package/out/street-morphology-fst-builder.js.map +1 -1
- package/out/street-normalize.d.ts +43 -28
- package/out/street-normalize.d.ts.map +1 -1
- package/out/street-normalize.js +96 -34
- package/out/street-normalize.js.map +1 -1
- package/out/street-segment-schema.d.ts +5 -5
- package/out/street-segment-schema.js +2 -2
- package/out/types.d.ts +42 -47
- package/out/types.d.ts.map +1 -1
- package/out/types.js +1 -1
- package/out/unified-schema.d.ts +6 -6
- package/out/unified-schema.d.ts.map +1 -1
- package/out/unified-schema.js +10 -10
- package/out/unified-schema.js.map +1 -1
- package/package.json +26 -22
package/out/build-candidate.d.ts
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* 2-step.
|
|
22
22
|
*
|
|
23
23
|
* The name_key normalizer is the SHARED {@link normalizeLocalityForKey} — the query side (the demo
|
|
24
|
-
* resolver {@link
|
|
24
|
+
* resolver {@link WOFCandidateTableLookup}) MUST use the same function, the one-normalizer
|
|
25
25
|
* discipline the address-point shard uses, so build/query stay consistent by construction.
|
|
26
26
|
*
|
|
27
27
|
* Measured (2026-06-20, vs the 2.6 GB full-DB FTS): ~5 M rows; ~12 range fetches per 8-query
|
|
@@ -33,10 +33,9 @@ export interface BuildCandidateOptions {
|
|
|
33
33
|
/** Output candidate DB path (overwritten if present). */
|
|
34
34
|
output: string;
|
|
35
35
|
/**
|
|
36
|
-
* Optional postcode shards (`spr` rows with `placetype='postalcode'` + real coords, e.g.
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* fallback). Matches the slim wof-hot.db, which took one such postcode DB.
|
|
36
|
+
* Optional postcode shards (`spr` rows with `placetype='postalcode'` + real coords, e.g. postalcode-us.db) — folded
|
|
37
|
+
* in as `postalcode` candidate rows so `findPlace(postalcode)` resolves a ZIP directly (the demo's primary postcode
|
|
38
|
+
* path; the postcode-*.bin anchor stays the fallback). Matches the slim wof-hot.db, which took one such postcode DB.
|
|
40
39
|
*/
|
|
41
40
|
postcodes?: string[];
|
|
42
41
|
/** Optional progress callback for CLI / test introspection. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-candidate.d.ts","sourceRoot":"","sources":["../build-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"build-candidate.d.ts","sourceRoot":"","sources":["../build-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAmBH,MAAM,WAAW,qBAAqB;IACrC,kGAAkG;IAClG,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACrD;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CACjB;AAkBD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmQpG"}
|
package/out/build-candidate.js
CHANGED
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
* 2-step.
|
|
22
22
|
*
|
|
23
23
|
* The name_key normalizer is the SHARED {@link normalizeLocalityForKey} — the query side (the demo
|
|
24
|
-
* resolver {@link
|
|
24
|
+
* resolver {@link WOFCandidateTableLookup}) MUST use the same function, the one-normalizer
|
|
25
25
|
* discipline the address-point shard uses, so build/query stay consistent by construction.
|
|
26
26
|
*
|
|
27
27
|
* Measured (2026-06-20, vs the 2.6 GB full-DB FTS): ~5 M rows; ~12 range fetches per 8-query
|
|
28
28
|
* session (the full DB needs 243); US locality 96.8% (region bbox), EU coord parity 88.6%.
|
|
29
29
|
*/
|
|
30
|
-
import { DatabaseClient } from "@mailwoman/core/kysley/client";
|
|
31
30
|
import { existsSync, rmSync } from "node:fs";
|
|
32
31
|
import { DatabaseSync } from "node:sqlite";
|
|
33
|
-
import {
|
|
32
|
+
import { DatabaseClient } from "@mailwoman/core/kysley/client";
|
|
33
|
+
import { createCandidateFTS } from "./candidate-fts.js";
|
|
34
34
|
import { CANDIDATE_COLUMNS, createCandidateStagingTables, createCandidateTable, } from "./candidate-schema.js";
|
|
35
35
|
import { normalizeLocalityForKey } from "./street-normalize.js";
|
|
36
36
|
/** Boundary-preserving alias-bag separator (#523, U+E000). */
|
|
@@ -50,7 +50,7 @@ export async function buildCandidateTable(opts) {
|
|
|
50
50
|
// assigned here; the rows are bulk-inserted via kdb once the passes have discovered every code. ---
|
|
51
51
|
const ccodes = new Map();
|
|
52
52
|
const ptcodes = new Map();
|
|
53
|
-
const
|
|
53
|
+
const ccID = (code) => {
|
|
54
54
|
const c = (code || "??").toUpperCase();
|
|
55
55
|
let id = ccodes.get(c);
|
|
56
56
|
if (id === undefined) {
|
|
@@ -59,7 +59,7 @@ export async function buildCandidateTable(opts) {
|
|
|
59
59
|
}
|
|
60
60
|
return id;
|
|
61
61
|
};
|
|
62
|
-
const
|
|
62
|
+
const ptID = (pt) => {
|
|
63
63
|
const p = pt || "";
|
|
64
64
|
let id = ptcodes.get(p);
|
|
65
65
|
if (id === undefined) {
|
|
@@ -93,8 +93,8 @@ export async function buildCandidateTable(opts) {
|
|
|
93
93
|
WHERE s.is_current != 0 AND s.is_deprecated = 0`)
|
|
94
94
|
.iterate()) {
|
|
95
95
|
const sid = Number(r.id);
|
|
96
|
-
const cid =
|
|
97
|
-
const ptid =
|
|
96
|
+
const cid = ccID(r.country);
|
|
97
|
+
const ptid = ptID(r.placetype);
|
|
98
98
|
const rid = regionOf.get(sid) ?? 0;
|
|
99
99
|
const pop = Number(r.pop) || 0;
|
|
100
100
|
const neg = -Math.log10(pop + 1);
|
|
@@ -164,10 +164,10 @@ export async function buildCandidateTable(opts) {
|
|
|
164
164
|
progress("abbrevs", `${nAbbr.toLocaleString()} abbrevs`);
|
|
165
165
|
// --- pass 4: postcodes (separate shards: spr placetype='postalcode' with real coords) ---
|
|
166
166
|
let nPostcode = 0;
|
|
167
|
-
for (const
|
|
168
|
-
progress("postcodes", `reading ${
|
|
169
|
-
const pc = new DatabaseSync(
|
|
170
|
-
const pcPtid =
|
|
167
|
+
for (const pcDB of opts.postcodes ?? []) {
|
|
168
|
+
progress("postcodes", `reading ${pcDB}`);
|
|
169
|
+
const pc = new DatabaseSync(pcDB, { readOnly: true });
|
|
170
|
+
const pcPtid = ptID("postalcode");
|
|
171
171
|
out.exec("BEGIN");
|
|
172
172
|
for (const r of pc
|
|
173
173
|
.prepare(`SELECT id, name, country, latitude, longitude,
|
|
@@ -182,7 +182,7 @@ export async function buildCandidateTable(opts) {
|
|
|
182
182
|
const lon = r.longitude;
|
|
183
183
|
// region_id 0 (a postcode is unique by name+country — no same-name disambiguation); neg_rank 0
|
|
184
184
|
// (no population). bbox = the postcode's own min/max (falls back to the centroid point).
|
|
185
|
-
insStage.run(key,
|
|
185
|
+
insStage.run(key, ccID(r.country), 0, pcPtid, 0, Number(r.id), name, lat, lon, r.mnlat || lat, r.mnlon || lon, r.mxlat || lat, r.mxlon || lon, 0, 1);
|
|
186
186
|
nPostcode++;
|
|
187
187
|
}
|
|
188
188
|
out.exec("COMMIT");
|
|
@@ -218,7 +218,7 @@ export async function buildCandidateTable(opts) {
|
|
|
218
218
|
// Typo-tolerant fallback index (the unified gazetteer's second mode): the exact name_key probe can't
|
|
219
219
|
// recover misspellings, so FTS5-trigram over `name` lets the reader fuzzy-match on an exact+strip miss.
|
|
220
220
|
progress("fts", "building FTS5-trigram fuzzy index");
|
|
221
|
-
|
|
221
|
+
createCandidateFTS(out);
|
|
222
222
|
// page_size MUST be set right before VACUUM: node:sqlite initializes the file at the 4096 default on
|
|
223
223
|
// `new DatabaseSync`, so the creation-time pragma is a no-op — only a VACUUM rebuilds at the new size.
|
|
224
224
|
// 8192 matches the sql.js-httpvfs 64 KiB request chunk cleanly (8 pages) and shallows the B-tree.
|
|
@@ -229,7 +229,8 @@ export async function buildCandidateTable(opts) {
|
|
|
229
229
|
.select((eb) => eb.fn.countAll().as("n"))
|
|
230
230
|
.executeTakeFirstOrThrow();
|
|
231
231
|
src.close();
|
|
232
|
-
await kdb.destroy();
|
|
232
|
+
await kdb.destroy();
|
|
233
|
+
// closes the underlying `out` connection
|
|
233
234
|
return { rows, places: attrs.size, primaries: nPrim, aliases: nAlias, abbrevs: nAbbr, postcodes: nPostcode };
|
|
234
235
|
}
|
|
235
236
|
//# sourceMappingURL=build-candidate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-candidate.js","sourceRoot":"","sources":["../build-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"build-candidate.js","sourceRoot":"","sources":["../build-candidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-coincident-roles-cli.d.ts","sourceRoot":"","sources":["../build-coincident-roles-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"build-coincident-roles-cli.d.ts","sourceRoot":"","sources":["../build-coincident-roles-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AA2DH,wBAAgB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CA0BpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-coincident-roles-cli.js","sourceRoot":"","sources":["../build-coincident-roles-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,SAAS,iBAAiB,CAAC,IAAY;IACtC,MAAM,CAAC,KAAK,CACX;QACC,4EAA4E;QAC5E,EAAE;QACF,qFAAqF;QACrF,+EAA+E;QAC/E,+EAA+E;QAC/E,EAAE;QACF,uFAAuF;QACvF,EAAE;QACF,UAAU;QACV,2EAA2E;QAC3E,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACX,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAa;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,yDAAyD,IAAI,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"build-coincident-roles-cli.js","sourceRoot":"","sources":["../build-coincident-roles-cli.ts"],"names":[],"mappings":"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"}
|
package/out/build-fts-cli.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `mailwoman-wof-build-fts <path-to-wof.db>... [--drop]`
|
|
8
8
|
*
|
|
9
9
|
* Operator-side one-shot CLI: takes one or more Who's On First SQLite distributions and adds the
|
|
10
|
-
* `place_search` FTS5 + `place_bbox` R*Tree virtual tables needed by `
|
|
10
|
+
* `place_search` FTS5 + `place_bbox` R*Tree virtual tables needed by `WOFSqlitePlaceLookup`. Run
|
|
11
11
|
* this once per downloaded WOF shard so production callers can skip the (~minutes-long) lazy
|
|
12
12
|
* build.
|
|
13
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-fts-cli.d.ts","sourceRoot":"","sources":["../build-fts-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"build-fts-cli.d.ts","sourceRoot":"","sources":["../build-fts-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAiGH,wBAAgB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAYpD"}
|
package/out/build-fts-cli.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `mailwoman-wof-build-fts <path-to-wof.db>... [--drop]`
|
|
8
8
|
*
|
|
9
9
|
* Operator-side one-shot CLI: takes one or more Who's On First SQLite distributions and adds the
|
|
10
|
-
* `place_search` FTS5 + `place_bbox` R*Tree virtual tables needed by `
|
|
10
|
+
* `place_search` FTS5 + `place_bbox` R*Tree virtual tables needed by `WOFSqlitePlaceLookup`. Run
|
|
11
11
|
* this once per downloaded WOF shard so production callers can skip the (~minutes-long) lazy
|
|
12
12
|
* build.
|
|
13
13
|
*
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
import { existsSync } from "node:fs";
|
|
23
23
|
import { exit, stderr } from "node:process";
|
|
24
24
|
import { DatabaseSync } from "node:sqlite";
|
|
25
|
-
import {
|
|
25
|
+
import { buildPlaceSearchFTS } from "./fts.js";
|
|
26
26
|
function printUsageAndExit(code) {
|
|
27
27
|
stderr.write([
|
|
28
28
|
"usage: mailwoman-wof-build-fts <path-to-wof.db>... [--drop]",
|
|
29
29
|
"",
|
|
30
30
|
"Builds the place_search FTS5 + place_bbox R*Tree virtual tables in one or more",
|
|
31
31
|
"Who's On First SQLite distributions. Run this once per downloaded WOF shard so",
|
|
32
|
-
"production
|
|
32
|
+
"production WOFSqlitePlaceLookup instances skip the lazy-build cost at first open.",
|
|
33
33
|
"",
|
|
34
34
|
" --drop Drop and rebuild place_search + place_bbox if they already exist.",
|
|
35
35
|
" Apply after refreshing the spr / names tables from a newer dump.",
|
|
@@ -67,8 +67,8 @@ function parseArgs(argv) {
|
|
|
67
67
|
return { databasePaths: args, drop };
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
* Build indexes on a single DB. Returns 0 on success, 1 on failure. Errors are written to stderr
|
|
71
|
-
*
|
|
70
|
+
* Build indexes on a single DB. Returns 0 on success, 1 on failure. Errors are written to stderr but the call doesn't
|
|
71
|
+
* throw — `main()` aggregates the exit code across multi-DB invocations.
|
|
72
72
|
*/
|
|
73
73
|
function buildOne(path, drop) {
|
|
74
74
|
if (!existsSync(path)) {
|
|
@@ -78,7 +78,7 @@ function buildOne(path, drop) {
|
|
|
78
78
|
stderr.write(`Opening ${path}…\n`);
|
|
79
79
|
const db = new DatabaseSync(path);
|
|
80
80
|
try {
|
|
81
|
-
const result =
|
|
81
|
+
const result = buildPlaceSearchFTS(db, {
|
|
82
82
|
drop,
|
|
83
83
|
onProgress: (phase, detail) => {
|
|
84
84
|
const suffix = detail ? ` — ${detail}` : "";
|
package/out/build-fts-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-fts-cli.js","sourceRoot":"","sources":["../build-fts-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAO9C,SAAS,iBAAiB,CAAC,IAAY;IACtC,MAAM,CAAC,KAAK,CACX;QACC,6DAA6D;QAC7D,EAAE;QACF,gFAAgF;QAChF,gFAAgF;QAChF,mFAAmF;QACnF,EAAE;QACF,8EAA8E;QAC9E,6EAA6E;QAC7E,EAAE;QACF,WAAW;QACX,iDAAiD;QACjD,4EAA4E;QAC5E,wDAAwD;QACxD,EAAE;QACF,oFAAoF;QACpF,sEAAsE;QACtE,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACX,CAAC;AAED,SAAS,SAAS,CAAC,IAAuB;IACzC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,IAAI,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"build-fts-cli.js","sourceRoot":"","sources":["../build-fts-cli.ts"],"names":[],"mappings":"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"}
|
package/out/build-slim-cli.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `mailwoman-wof-build-slim --in <wof.db>... --out <slim.db> [--top 1000] [--countries US]`
|
|
8
8
|
*
|
|
9
9
|
* Operator-side one-shot CLI that produces a "slim" WOF SQLite distribution sized for the
|
|
10
|
-
* browser-side mailwoman demo (Path B). Delegates to {@linkcode
|
|
10
|
+
* browser-side mailwoman demo (Path B). Delegates to {@linkcode buildSlimWOFDatabase}; the CLI is
|
|
11
11
|
* just argument parsing + stderr progress.
|
|
12
12
|
*/
|
|
13
13
|
export declare function main(rawArgv: string[]): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-slim-cli.d.ts","sourceRoot":"","sources":["../build-slim-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"build-slim-cli.d.ts","sourceRoot":"","sources":["../build-slim-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AA6FH,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsC7D"}
|
package/out/build-slim-cli.js
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
* `mailwoman-wof-build-slim --in <wof.db>... --out <slim.db> [--top 1000] [--countries US]`
|
|
8
8
|
*
|
|
9
9
|
* Operator-side one-shot CLI that produces a "slim" WOF SQLite distribution sized for the
|
|
10
|
-
* browser-side mailwoman demo (Path B). Delegates to {@linkcode
|
|
10
|
+
* browser-side mailwoman demo (Path B). Delegates to {@linkcode buildSlimWOFDatabase}; the CLI is
|
|
11
11
|
* just argument parsing + stderr progress.
|
|
12
12
|
*/
|
|
13
13
|
import { exit, stderr } from "node:process";
|
|
14
|
-
import {
|
|
14
|
+
import { buildSlimWOFDatabase } from "./build-slim.js";
|
|
15
15
|
function printUsageAndExit(code) {
|
|
16
16
|
stderr.write([
|
|
17
17
|
"usage: mailwoman-wof-build-slim --in <wof.db>... --out <slim.db> [--top N] [--countries US,CA,...] [--drop-names]",
|
|
@@ -108,7 +108,7 @@ export async function main(rawArgv) {
|
|
|
108
108
|
},
|
|
109
109
|
};
|
|
110
110
|
try {
|
|
111
|
-
const result = await
|
|
111
|
+
const result = await buildSlimWOFDatabase(opts);
|
|
112
112
|
const mb = (result.outputBytes / 1024 / 1024).toFixed(1);
|
|
113
113
|
stderr.write(`\nBuilt ${result.outputPath} (${mb} MB)\n` +
|
|
114
114
|
` spr=${result.rowCounts.spr}` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-slim-cli.js","sourceRoot":"","sources":["../build-slim-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,oBAAoB,EAAyB,MAAM,iBAAiB,CAAA;AAU7E,SAAS,iBAAiB,CAAC,IAAY;IACtC,MAAM,CAAC,KAAK,CACX;QACC,mHAAmH;QACnH,EAAE;QACF,wFAAwF;QACxF,kFAAkF;QAClF,+FAA+F;QAC/F,8BAA8B;QAC9B,uFAAuF;QACvF,4EAA4E;QAC5E,EAAE;QACF,6FAA6F;QAC7F,4FAA4F;QAC5F,wCAAwC;QACxC,EAAE;QACF,WAAW;QACX,oFAAoF;QACpF,yEAAyE;QACzE,kFAAkF;QAClF,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACX,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAChC,MAAM,GAAG,GAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"build-slim-cli.js","sourceRoot":"","sources":["../build-slim-cli.ts"],"names":[],"mappings":"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"}
|
package/out/build-slim.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*
|
|
27
27
|
* The output DB has the resolver-facing schema: `spr`, `names`, `place_population`, plus the
|
|
28
28
|
* `place_search` FTS5 / `place_bbox` R*Tree virtual tables rebuilt against the trimmed row set
|
|
29
|
-
* (both derive purely from `spr` + `names` — see `fts.ts`). That means `
|
|
29
|
+
* (both derive purely from `spr` + `names` — see `fts.ts`). That means `WOFSqlitePlaceLookup`
|
|
30
30
|
* opens the slim DB without any code change — it sees a smaller universe, nothing more.
|
|
31
31
|
*
|
|
32
32
|
* Multi-shard inputs (e.g. admin + postcode) are processed in sequence; selected rows accumulate
|
|
@@ -44,12 +44,11 @@ export interface BuildSlimOptions {
|
|
|
44
44
|
/** Cap on the number of localities to keep per country, by descending population. */
|
|
45
45
|
topLocalitiesPerCountry?: number;
|
|
46
46
|
/**
|
|
47
|
-
* Drop the `names` table after the FTS index is built (default false). `place_search` is a
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* should ship a SEPARATE shard rather than re-bloat the hot DB.
|
|
47
|
+
* Drop the `names` table after the FTS index is built (default false). `place_search` is a self-contained FTS5 (no
|
|
48
|
+
* external `content=`), so once it's built `names` is only the build-time source — the resolver queries
|
|
49
|
+
* `place_search` + `spr` + `place_population` + `coincident_roles` and never reads `names` at runtime. Dropping it is
|
|
50
|
+
* the single biggest size win (~2/3 of the file for a multi-locale build; see #359). A future consumer that needs raw
|
|
51
|
+
* alt-names at runtime should ship a SEPARATE shard rather than re-bloat the hot DB.
|
|
53
52
|
*/
|
|
54
53
|
dropNames?: boolean;
|
|
55
54
|
/** Optional progress callback for CLI / test introspection. */
|
|
@@ -67,5 +66,5 @@ export interface BuildSlimResult {
|
|
|
67
66
|
placePopulation: number;
|
|
68
67
|
};
|
|
69
68
|
}
|
|
70
|
-
export declare function
|
|
69
|
+
export declare function buildSlimWOFDatabase(opts: BuildSlimOptions): Promise<BuildSlimResult>;
|
|
71
70
|
//# sourceMappingURL=build-slim.d.ts.map
|
package/out/build-slim.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-slim.d.ts","sourceRoot":"","sources":["../build-slim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;
|
|
1
|
+
{"version":3,"file":"build-slim.d.ts","sourceRoot":"","sources":["../build-slim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAaH,MAAM,WAAW,gBAAgB;IAChC,sGAAsG;IACtG,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,qFAAqF;IACrF,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5D;AAED,MAAM,MAAM,cAAc,GACvB,MAAM,GACN,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,OAAO,GACP,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,GACZ,KAAK,GACL,QAAQ,GACR,MAAM,CAAA;AAET,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE;QACV,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,eAAe,EAAE,MAAM,CAAA;KACvB,CAAA;CACD;AAgCD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwH3F"}
|
package/out/build-slim.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*
|
|
27
27
|
* The output DB has the resolver-facing schema: `spr`, `names`, `place_population`, plus the
|
|
28
28
|
* `place_search` FTS5 / `place_bbox` R*Tree virtual tables rebuilt against the trimmed row set
|
|
29
|
-
* (both derive purely from `spr` + `names` — see `fts.ts`). That means `
|
|
29
|
+
* (both derive purely from `spr` + `names` — see `fts.ts`). That means `WOFSqlitePlaceLookup`
|
|
30
30
|
* opens the slim DB without any code change — it sees a smaller universe, nothing more.
|
|
31
31
|
*
|
|
32
32
|
* Multi-shard inputs (e.g. admin + postcode) are processed in sequence; selected rows accumulate
|
|
@@ -34,20 +34,20 @@
|
|
|
34
34
|
* everything else. Empty / missing input paths are skipped (callers pass `""` when a shard, such
|
|
35
35
|
* as a custom postcode DB, isn't built yet).
|
|
36
36
|
*/
|
|
37
|
-
import { SqliteDialect } from "@mailwoman/core/kysley/dialect";
|
|
38
|
-
import { Kysely, sql } from "kysely";
|
|
39
37
|
import { copyFileSync, existsSync, mkdtempSync, rmSync, statSync } from "node:fs";
|
|
40
38
|
import { tmpdir } from "node:os";
|
|
41
39
|
import { join } from "node:path";
|
|
42
40
|
import { DatabaseSync } from "node:sqlite";
|
|
43
|
-
import {
|
|
41
|
+
import { SqliteDialect } from "@mailwoman/core/kysley/dialect";
|
|
42
|
+
import { Kysely, sql } from "kysely";
|
|
43
|
+
import { buildPlaceSearchFTS, PLACE_BBOX_TABLE, PLACE_POPULATION_TABLE, PLACE_SEARCH_TABLE } from "./fts.js";
|
|
44
44
|
/** Placetypes that we always keep so the ancestor chain a selected locality reports stays valid. */
|
|
45
45
|
const ANCESTOR_PLACETYPES = ["country", "region", "county", "borough", "macroregion"];
|
|
46
46
|
/** Tables copied verbatim (schema + filtered rows) from each source DB. Anything else is dropped. */
|
|
47
47
|
const COPIED_TABLES = ["spr", "names", PLACE_POPULATION_TABLE];
|
|
48
48
|
/** Fallback DDL for `place_population` when the first source predates the aux table (defensive). */
|
|
49
49
|
const PLACE_POPULATION_DDL = `CREATE TABLE ${PLACE_POPULATION_TABLE} (id INTEGER PRIMARY KEY, population INTEGER NOT NULL DEFAULT 0)`;
|
|
50
|
-
export async function
|
|
50
|
+
export async function buildSlimWOFDatabase(opts) {
|
|
51
51
|
const countries = (opts.countries ?? ["US"]).map((c) => c.toUpperCase());
|
|
52
52
|
const topLocalities = opts.topLocalitiesPerCountry ?? 1000;
|
|
53
53
|
const progress = opts.onProgress ?? (() => { });
|
|
@@ -73,13 +73,13 @@ export async function buildSlimWofDatabase(opts) {
|
|
|
73
73
|
try {
|
|
74
74
|
progress("schema", "copying spr / names / place_population schemas from first input");
|
|
75
75
|
for (const table of COPIED_TABLES) {
|
|
76
|
-
const
|
|
76
|
+
const createSQL = firstSource
|
|
77
77
|
.prepare(`SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?`)
|
|
78
78
|
.get(table);
|
|
79
|
-
if (
|
|
79
|
+
if (createSQL?.sql) {
|
|
80
80
|
// Raw DDL by design (introspect-and-replay): we exec the SOURCE DB's own CREATE TABLE
|
|
81
81
|
// string read from sqlite_master, so a static Kysely builder can't express it. See AGENTS.md.
|
|
82
|
-
out.exec(
|
|
82
|
+
out.exec(createSQL.sql);
|
|
83
83
|
}
|
|
84
84
|
else if (table === PLACE_POPULATION_TABLE) {
|
|
85
85
|
// Older source builds may predate the aux table — create it empty so the per-source
|
|
@@ -107,7 +107,7 @@ export async function buildSlimWofDatabase(opts) {
|
|
|
107
107
|
// population aux table is NOT rebuilt here: it was copied verbatim above, and fts.ts only
|
|
108
108
|
// (re)builds it when a `geojson` table is present, which the slim DB intentionally has not.
|
|
109
109
|
progress("fts", "building place_search / place_bbox on slim DB");
|
|
110
|
-
|
|
110
|
+
buildPlaceSearchFTS(out, {
|
|
111
111
|
drop: true, // schema we copied had no FTS tables, but be explicit
|
|
112
112
|
onProgress: (phase, name) => progress("fts", `${phase} ${name}`),
|
|
113
113
|
});
|
package/out/build-slim.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-slim.js","sourceRoot":"","sources":["../build-slim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"build-slim.js","sourceRoot":"","sources":["../build-slim.ts"],"names":[],"mappings":"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"}
|
package/out/candidate-fts.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* key, so the contiguous-probe lookup returns nothing). It indexes the NORMALIZED key (not the
|
|
9
9
|
* raw `name`), so a diacritic-stripped query (`munchen`) trigram-matches the stored `munchen`
|
|
10
10
|
* rather than missing a raw `München`. The trigram tokenizer makes MATCH a substring/fuzzy
|
|
11
|
-
* operation; the reader ({@link
|
|
11
|
+
* operation; the reader ({@link WOFCandidateTableLookup}) OR's the query's trigrams to fetch a
|
|
12
12
|
* loose set, then re-ranks by the SAME `trigramJaccard` the admin/FTS backend uses, so a typo
|
|
13
13
|
* resolves identically on either.
|
|
14
14
|
*
|
|
@@ -24,14 +24,12 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import type { DatabaseSync } from "node:sqlite";
|
|
26
26
|
/**
|
|
27
|
-
* Name of the FTS5 trigram virtual table this module owns. The reader gates its fuzzy fallback on
|
|
28
|
-
* it.
|
|
27
|
+
* Name of the FTS5 trigram virtual table this module owns. The reader gates its fuzzy fallback on it.
|
|
29
28
|
*/
|
|
30
29
|
export declare const CANDIDATE_FTS_TABLE = "candidate_fts";
|
|
31
30
|
/**
|
|
32
|
-
* Build (or rebuild) {@link CANDIDATE_FTS_TABLE} from the materialized `candidate` table. Call after
|
|
33
|
-
*
|
|
34
|
-
* (migration).
|
|
31
|
+
* Build (or rebuild) {@link CANDIDATE_FTS_TABLE} from the materialized `candidate` table. Call after the candidate
|
|
32
|
+
* B-tree is populated (build pipeline) or against an existing candidate DB (migration).
|
|
35
33
|
*/
|
|
36
|
-
export declare function
|
|
34
|
+
export declare function createCandidateFTS(db: DatabaseSync): void;
|
|
37
35
|
//# sourceMappingURL=candidate-fts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-fts.d.ts","sourceRoot":"","sources":["../candidate-fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C
|
|
1
|
+
{"version":3,"file":"candidate-fts.d.ts","sourceRoot":"","sources":["../candidate-fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAA;AAElD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAMzD"}
|
package/out/candidate-fts.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* key, so the contiguous-probe lookup returns nothing). It indexes the NORMALIZED key (not the
|
|
9
9
|
* raw `name`), so a diacritic-stripped query (`munchen`) trigram-matches the stored `munchen`
|
|
10
10
|
* rather than missing a raw `München`. The trigram tokenizer makes MATCH a substring/fuzzy
|
|
11
|
-
* operation; the reader ({@link
|
|
11
|
+
* operation; the reader ({@link WOFCandidateTableLookup}) OR's the query's trigrams to fetch a
|
|
12
12
|
* loose set, then re-ranks by the SAME `trigramJaccard` the admin/FTS backend uses, so a typo
|
|
13
13
|
* resolves identically on either.
|
|
14
14
|
*
|
|
@@ -23,16 +23,14 @@
|
|
|
23
23
|
* fallback only needs to recover the name_key, then re-probes the B-tree for its rows).
|
|
24
24
|
*/
|
|
25
25
|
/**
|
|
26
|
-
* Name of the FTS5 trigram virtual table this module owns. The reader gates its fuzzy fallback on
|
|
27
|
-
* it.
|
|
26
|
+
* Name of the FTS5 trigram virtual table this module owns. The reader gates its fuzzy fallback on it.
|
|
28
27
|
*/
|
|
29
28
|
export const CANDIDATE_FTS_TABLE = "candidate_fts";
|
|
30
29
|
/**
|
|
31
|
-
* Build (or rebuild) {@link CANDIDATE_FTS_TABLE} from the materialized `candidate` table. Call after
|
|
32
|
-
*
|
|
33
|
-
* (migration).
|
|
30
|
+
* Build (or rebuild) {@link CANDIDATE_FTS_TABLE} from the materialized `candidate` table. Call after the candidate
|
|
31
|
+
* B-tree is populated (build pipeline) or against an existing candidate DB (migration).
|
|
34
32
|
*/
|
|
35
|
-
export function
|
|
33
|
+
export function createCandidateFTS(db) {
|
|
36
34
|
db.exec(`DROP TABLE IF EXISTS ${CANDIDATE_FTS_TABLE}`);
|
|
37
35
|
db.exec(`CREATE VIRTUAL TABLE ${CANDIDATE_FTS_TABLE} USING fts5(name_key, tokenize='trigram')`);
|
|
38
36
|
db.exec(`INSERT INTO ${CANDIDATE_FTS_TABLE}(name_key) SELECT DISTINCT name_key FROM candidate WHERE name_key IS NOT NULL`);
|
package/out/candidate-fts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-fts.js","sourceRoot":"","sources":["../candidate-fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH
|
|
1
|
+
{"version":3,"file":"candidate-fts.js","sourceRoot":"","sources":["../candidate-fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAA;AAElD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAgB;IAClD,EAAE,CAAC,IAAI,CAAC,wBAAwB,mBAAmB,EAAE,CAAC,CAAA;IACtD,EAAE,CAAC,IAAI,CAAC,wBAAwB,mBAAmB,2CAA2C,CAAC,CAAA;IAC/F,EAAE,CAAC,IAAI,CACN,eAAe,mBAAmB,+EAA+E,CACjH,CAAA;AACF,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
6
|
* Node-side {@link PlaceLookup} over the byte-range CANDIDATE table (`build-candidate.ts`) — the
|
|
7
|
-
* SAME gazetteer the browser demo resolves against ({@link
|
|
7
|
+
* SAME gazetteer the browser demo resolves against ({@link WOFCandidateTableLookup} in
|
|
8
8
|
* `docs/src/shared/httpvfs-resolver.ts`), but reading a LOCAL `candidate.db` via `node:sqlite`
|
|
9
9
|
* instead of sql.js-httpvfs. This is what makes the server/CLI resolver match the demo: one
|
|
10
10
|
* lookup surface, one artifact, one ranking.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* {@link normalizeLocalityForKey} (build- and query-consistent), each row is denormalized (display
|
|
15
15
|
* `name`, centroid, bbox), and population rank is precomputed into `neg_rank` — so the result is
|
|
16
16
|
* POPULATION-FIRST and COUNTRY-AGNOSTIC (when no `country` filter is given), exactly like the
|
|
17
|
-
* demo. That's the deliberate divergence from {@link
|
|
17
|
+
* demo. That's the deliberate divergence from {@link WOFSqlitePlaceLookup}'s FTS/bm25 ranking: a
|
|
18
18
|
* bare "Moscow" resolves to the 10.4 M-pop Russian city, not whichever same-name US township bm25
|
|
19
19
|
* floats to the top.
|
|
20
20
|
*
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { DatabaseSync } from "node:sqlite";
|
|
26
26
|
import type { FindPlaceQuery, PlaceCandidate, PlaceLookup } from "./types.js";
|
|
27
|
-
export interface
|
|
27
|
+
export interface WOFCandidateTableLookupOpts {
|
|
28
28
|
/** Path to a `candidate.db` built by `build-candidate.ts`. Opened read-only. */
|
|
29
29
|
databasePath?: string;
|
|
30
30
|
/** Pre-opened handle (tests / shared connections). Mutually exclusive with `databasePath`. */
|
|
31
31
|
database?: DatabaseSync;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* Node {@link PlaceLookup} over `candidate.db`. Drop-in for {@link
|
|
35
|
-
*
|
|
34
|
+
* Node {@link PlaceLookup} over `candidate.db`. Drop-in for {@link WOFSqlitePlaceLookup} in `createWOFResolver(backend)`
|
|
35
|
+
* — same `findPlace` contract, population-first ranking.
|
|
36
36
|
*/
|
|
37
|
-
export declare class
|
|
37
|
+
export declare class WOFCandidateTableLookup implements PlaceLookup {
|
|
38
38
|
#private;
|
|
39
|
-
constructor(opts:
|
|
39
|
+
constructor(opts: WOFCandidateTableLookupOpts);
|
|
40
40
|
findPlace(query: FindPlaceQuery): Promise<PlaceCandidate[]>;
|
|
41
41
|
close(): void;
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-lookup.d.ts","sourceRoot":"","sources":["../candidate-lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"candidate-lookup.d.ts","sourceRoot":"","sources":["../candidate-lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAU1C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAA;AAE3F,MAAM,WAAW,2BAA2B;IAC3C,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,YAAY,CAAA;CACvB;AA6CD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,WAAW;;gBA0B9C,IAAI,EAAE,2BAA2B;IAoDvC,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuJjE,KAAK,IAAI,IAAI;CAGb"}
|