@yoch/frozenminisearch 1.2.3 → 1.2.4
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/CHANGELOG.md +16 -0
- package/README.md +7 -7
- package/dist/cjs/index.cjs +2403 -2295
- package/dist/es/index.d.ts +44 -16
- package/dist/es/index.js +2400 -2296
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## v1.2.4 — `@yoch/frozenminisearch`
|
|
6
|
+
|
|
7
|
+
Patch release: faster frozen search and autoSuggest finalization, simplified AND gate heuristics, and small public exports for advanced callers. No MSv5 wire-format changes.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Public finalize/suggest helpers** — export `finalizeRawSearchResults`, `finalizeSearchResults`, `suggestFromRawResults`, and `suggestFromSearchResults` from the package entry.
|
|
12
|
+
|
|
13
|
+
### Improved
|
|
14
|
+
|
|
15
|
+
- **Tied-score finalization** — skip result sorting when every hit shares the same final score (search and suggestions).
|
|
16
|
+
- **Frozen search finalize** — copy stored fields in place via `assignStoredFields` (no per-document row allocation for single-column layouts).
|
|
17
|
+
- **AutoSuggest without `filter`** — aggregate suggestions from raw query hits instead of materializing full `SearchResult` objects.
|
|
18
|
+
- **AND gate heuristics** — pass selective gates as `allowedDocs` consistently; keep prefix/fuzzy on sequential gating via a cheap two-phase posting estimator.
|
|
19
|
+
- **CPU-only benchmarks** — `benchmark:finalize` and `benchmark:autosuggest` scripts; clearer reporting when benchmark payloads omit structural metrics.
|
|
20
|
+
|
|
5
21
|
## v1.2.3 — `@yoch/frozenminisearch`
|
|
6
22
|
|
|
7
23
|
Patch release: broad-first exact AND / AND_NOT paths, seek-based gated doc-id collection, and README benchmark copy refresh. No API or MSv5 wire-format changes.
|
package/README.md
CHANGED
|
@@ -32,15 +32,15 @@ Same corpora, same BM25-style queries, MiniSearch 7.2.0 as the reference.
|
|
|
32
32
|
|
|
33
33
|
| Scenario | Docs | Index RAM | Binary size | Load time | Search p50 |
|
|
34
34
|
|----------|-----:|-----------|------------:|----------:|-----------:|
|
|
35
|
-
| Divina, with stored text | 14,097 | 0.3 vs 16.
|
|
36
|
-
| Divina, index only | 14,097 | 0.2 vs 14.9 MB (~99% less) | ~77% less | ~
|
|
37
|
-
| High-frequency terms | 10,000 | 4.4 vs 7.4 MB (~
|
|
38
|
-
| Dense numeric ids | 100,000 | 0.9 vs 91.3 MB (~99% less) | ~88% less | ~
|
|
39
|
-
| Uint16 doc id boundary | 65,535 | 0.6 vs 58.6 MB (~99% less) | ~91% less | ~
|
|
35
|
+
| Divina, with stored text | 14,097 | 0.3 vs 16.0 MB (~98% less) | ~73% less | ~69% faster | ~20% faster |
|
|
36
|
+
| Divina, index only | 14,097 | 0.2 vs 14.9 MB (~99% less) | ~77% less | ~84% faster | ~19% faster |
|
|
37
|
+
| High-frequency terms | 10,000 | 4.4 vs 7.4 MB (~40% less) | ~94% less | ~89% faster | ~43% faster |
|
|
38
|
+
| Dense numeric ids | 100,000 | 0.9 vs 91.3 MB (~99% less) | ~88% less | ~90% faster | ~33% faster |
|
|
39
|
+
| Uint16 doc id boundary | 65,535 | 0.6 vs 58.6 MB (~99% less) | ~91% less | ~94% faster | ~59% faster |
|
|
40
40
|
|
|
41
|
-
Across this full run, frozen is faster on **
|
|
41
|
+
Across this full run, frozen is faster on **26/27** search cases. Divina `inferno` (exact, paired p50): mutable 15.0 µs → frozen 11.3 µs (**-4 µs**, ratio 0.74).
|
|
42
42
|
|
|
43
|
-
Numbers are from `benchmarks/baselines/reference.json`, captured 2026-06-
|
|
43
|
+
Numbers are from `benchmarks/baselines/reference.json`, captured 2026-06-20 on Node v24.16.0, 3 runs per scenario. Heap is measured with one index alive and should be read as a trend, not exact accounting.
|
|
44
44
|
<!-- vs-reference:end -->
|
|
45
45
|
|
|
46
46
|
---
|